On Sunday, 3 December 2017 at 05:49:54 UTC, Fra Mecca wrote:
I have this code:
Configuration conf = void ;
try {
conf = parse_config("config.sdl");
} catch (Exception e) {
std.stdio.stderr.writeln("Error reading configuration
file: ", e.msg);
exit(1);
}
Since most programs have more than place where execution must be
terminated, you end up dupliating that try-catch-code all over
the program making it unreadable. When you try to avoid calling
exit this problem will not arise. You can simply write
```
auto conf = parse_config("config.sdl");
```
The exception unwinds the stack and terminates the program. If a
stacktrace on the command line does not suffice I would wrap the
main-code in a try-catch block. Your function parse_config should
support this coding style by putting a whole sentence into the
Exception instead of the mere filename, then the try-catch
wrapper in main may look like this:
```
int main ()
{
try {
real_main ();
}
catch (Exception e) {
std.stdio.stderr.writeln(e.msg);
return 1;
}
return 0;
}
```