156a7579e2
This package provides additional safety and simplicity versus Control.Exception by having its functions recognize the difference between synchronous and asynchronous exceptions. As described below, synchronous exceptions are treated as recoverable, allowing you to catch and handle them as well as clean up after them, whereas asynchronous exceptions can only be cleaned up after. In particular, this library prevents you from making the following mistakes: * Catching and swallowing an asynchronous exception * Throwing an asynchronous exception synchronously * Throwing a synchronous exception asynchronously * Swallowing asynchronous exceptions via failing cleanup handlers
12 lines
678 B
Text
12 lines
678 B
Text
This package provides additional safety and simplicity versus
|
|
Control.Exception by having its functions recognize the difference between
|
|
synchronous and asynchronous exceptions. As described below, synchronous
|
|
exceptions are treated as recoverable, allowing you to catch and handle
|
|
them as well as clean up after them, whereas asynchronous exceptions can
|
|
only be cleaned up after. In particular, this library prevents you from
|
|
making the following mistakes:
|
|
|
|
* Catching and swallowing an asynchronous exception
|
|
* Throwing an asynchronous exception synchronously
|
|
* Throwing a synchronous exception asynchronously
|
|
* Swallowing asynchronous exceptions via failing cleanup handlers
|