On Fri, Feb 27, 2009 at 9:01 AM, Qian Xu <quian...@stud.tu-ilmenau.de> wrote: > Hi All, > > Is there any way to keep program alive, when an AV takes place? > > -- demo ------------------------------- > module NullPointerExceptionTest; > > class Foo { > void bar() {} > } > > void main() { > Foo foo; // foo is still NULL > try { > foo.bar(); // A NullPointerException will be thrown > } > catch (Exception E) { > // Can I catch this NullPointerException? > } > } > ---------------------------------------- > > The program will crash, when the line "foo.bar()" is executed, even when a > try-catch-block is added. So far as I know, Java and Delphi can prevent > such kind of crashes from happening with a try-catch-block. Is it possible > in D?
It's possible on Windows in D, but that's because Windows reports segfaults with the same mechanism that D uses for exceptions. Since Linux (and many other Posix systems) uses signals, it's probably very tricky to implement in a cross-platform manner.