Affiliation:
1. University of Leuven, Leuven, Belgium
Abstract
Ever since their invention 30 years ago, checked exceptions have been a point of much discussion. On the one hand, they increase the robustness of software by preventing the manifestation of unanticipated checked exceptions at run-time. On the other hand, they decrease the adaptability of software because they must be propagated explicitly, and must often be handled even if they cannot be signalled.We show that the problems with checked exceptions are caused by a lack of expressiveness of the exceptional return type of a method, which currently dictates a copy & paste style. We add the required expressiveness by introducing anchored exception declarations, which allow the exceptional behavior of a method to be declared relative to that of others. We present the formal semantics of anchored exception declarations, along with the necessary rules for ensuring compile-time safety, and give a proof of soundness. We show that anchored exception declarations do not violate the principle of information hiding when used properly, and provide a guideline for when to use them.We have implemented anchored exception declarations in Cappuccino, which is an extension to the ClassicJava programming language.
Publisher
Association for Computing Machinery (ACM)
Subject
Computer Graphics and Computer-Aided Design,Software
Cited by
12 articles.
订阅此论文施引文献
订阅此论文施引文献,注册后可以免费订阅5篇论文的施引文献,订阅后可以查看论文全部施引文献
1. Detecting Runtime Exceptions by Deep Code Representation Learning with Attention-Based Graph Neural Networks;2022 IEEE International Conference on Software Analysis, Evolution and Reengineering (SANER);2022-03
2. Bounded Abstract Effects;ACM Transactions on Programming Languages and Systems;2022-01-12
3. Polymorphic Iterable Sequential Effect Systems;ACM Transactions on Programming Languages and Systems;2021-03-31
4. JEff: objects for effect;Proceedings of the 2018 ACM SIGPLAN International Symposium on New Ideas, New Paradigms, and Reflections on Programming and Software;2018-10-24
5. Exception handling bug hazards in Android;Empirical Software Engineering;2016-08-13