Ända sedan de uppfanns för 30 år sedan har kontrollerade undantag varit en viktig diskussionspunkt. Å ena sidan ökar de programvarans robusthet genom att förhindra manifestation av oförutsedda kontrollerade undantag i körtid. Å andra sidan minskar de programvarans anpassningsförmåga eftersom de måste spridas explicit och ofta måste hanteras även om de inte kan signaleras. Vi visar att problemen med kontrollerade undantag orsakas av en brist på uttrycksfullhet i den exceptionella returtypen av en metod, som för närvarande dikterar en kopia & klistra stil. Vi lägger till den nödvändiga expressiviteten genom att införa förankrade undantagsdeklarationer, som gör det möjligt att förklara ett exceptionellt beteende hos en metod i förhållande till andras. Vi presenterar de formella semantiken med förankrade undantagsdeklarationer, tillsammans med de regler som krävs för att garantera tidssäkerhet, och ger ett bevis på sundhet. Vi visar att förankrade undantagsdeklarationer inte bryter mot principen om information som gömmer sig när de används på rätt sätt, och ger en riktlinje för när de ska användas. Vi har implementerat förankrade undantagsdeklarationer i Cappuccino, vilket är en förlängning till ClassicJava programmeringsspråk.
I REF införde vi förankrade undantagsdeklarationer för att avlägsna hårda referenser från den exceptionella specifikationen av en komponent.
Combining the robustness of checked exceptions with the flexibility of unchecked exceptions using anchored exception declarations
{'venue': "OOPSLA '05", 'journal': None, 'mag_field_of_study': ['Computer Science']}