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;
}
```

Reply via email to