Changeset 826ee62
- Timestamp:
- Mar 31, 2021, 2:18:19 PM (4 years ago)
- Branches:
- ADT, arm-eh, ast-experimental, enum, forall-pointer-decay, jacob/cs343-translation, master, new-ast-unique-expr, pthread-emulation, qualifiedEnum
- Children:
- 198e335
- Parents:
- c60ef639
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
TabularUnified doc/theses/andrew_beach_MMath/future.tex ¶
rc60ef639 r826ee62 83 83 patterns to find the handler. 84 84 85 \section{Checked Exceptions} 86 Checked exceptions make exceptions part of a function's type by adding the 87 exception signature. An exception signature must declare all checked 88 exceptions that could propogate from the function (either because they were 89 raised inside the function or came from a sub-function). This improves safety 90 by making sure every checked exception is either handled or consciously 91 passed on. 92 93 However checked exceptions were never seriously considered for this project 94 for two reasons. The first is due to time constraints, even copying an 95 existing checked exception system would be pushing the remaining time and 96 trying to address the second problem would take even longer. The second 97 problem is that checked exceptions have some real usability trade-offs in 98 exchange for the increased safety. 99 100 These trade-offs are most problematic when trying to pass exceptions through 101 higher-order functions from the functions the user passed into the 102 higher-order function. There are no well known solutions to this problem 103 that were statifactory for \CFA (which carries some of C's flexability 104 over safety design) so one would have to be researched and developed. 105 106 Follow-up work might add checked exceptions to \CFA, possibly using 107 polymorphic exception signatures, a form of tunneling\cite{Zhang19} or 108 checked and unchecked raises. 109 85 110 \section{Zero-Cost Try} 86 111 \CFA does not have zero-cost try-statements because the compiler generates C
Note: See TracChangeset
for help on using the changeset viewer.