Comparing Exceptions and Errors

Steven Schveighoffer schveiguy at gmail.com
Tue Jun 7 18:37:13 UTC 2022


On 6/7/22 12:28 PM, frame wrote:
> On Friday, 3 June 2022 at 23:40:50 UTC, Steven Schveighoffer wrote:
>> During the last beerconf, I wrote a short blog post about how `Error` 
>> and `Exception` are different, and why you should never continue after 
>> catching `Error`s.
> 
> I know the thematics but I still wonder why we only have 
> `scope(failure)` then? Anywhere where you will use this shiny thing with 
> a return statement will also catch any error that have occurred. 
> `scope(exit)` doesn't allow return statements, thus the only properly 
> clean design would be an additional `scope(exception)` guard.

My very common use of `scope(failure)` for my DB code:

```d
conn.exec("START TRANSACTION");
scope(success) conn.exec("COMMIT");
scope(failure) conn.exec("ROLLBACK");
```

This is hard to encapsulate into a type, as dtors only hook 
`scope(exit)` essentially.

-Steve


More information about the Digitalmars-d-learn mailing list