Fault oblivious software
When faults occur in software they are in nature unanticipated, even though we may know that they will occur. The prevailing paradigm for such is currently, throw the exception. I call that the Pilate syndrome, where the developer washes his hands of the error. This behavior leads the crashes because unhandled i.e. unanticipated exceptions leads to that.
Dont throw exceptions. Now here I am going to violate a lot of correctness principles, because when I advocate for not throwing exceptions, then what should be done? Well nothing. If you try to open a nonexisting file, well you get an file object. When you try to read from it you get a default character, when you read its length you get zero.
All modules that behaves oblivious to faults, will not crash. What happens when faults occur then? The software will be missing in functionality (i.e. something does not work). The result is the same as if it crashed, that the function didnt work. But since the software didnt crash it might act reasonably anyway.
It takes more work to write your libraries to encapsulate faults like this. For debugging purposes a log will suffice, so where you would usually throw your exception, just make a log entry. If the log is an interface, you can if you like display a dialogbox, and halt the program afterwards if you really want to simulate the crash.
Dont throw exceptions. Now here I am going to violate a lot of correctness principles, because when I advocate for not throwing exceptions, then what should be done? Well nothing. If you try to open a nonexisting file, well you get an file object. When you try to read from it you get a default character, when you read its length you get zero.
All modules that behaves oblivious to faults, will not crash. What happens when faults occur then? The software will be missing in functionality (i.e. something does not work). The result is the same as if it crashed, that the function didnt work. But since the software didnt crash it might act reasonably anyway.
It takes more work to write your libraries to encapsulate faults like this. For debugging purposes a log will suffice, so where you would usually throw your exception, just make a log entry. If the log is an interface, you can if you like display a dialogbox, and halt the program afterwards if you really want to simulate the crash.
