Exception/Error division in D

Artur Skawina art.08.09 at gmail.com
Wed May 30 18:06:36 PDT 2012


On 05/31/12 00:21, Jonathan M Davis wrote:
> Now, it's perfectly possible to design code which never checks for null 
> pointers and if a null pointer is dereferenced throws an Exception and 
> attempts to recover from it (assuming that it's possible to detect the 
> dereference and throw at that point, which AFAIK is impossible with segfaults 
> - maybe it could be done on Windows with its Access Violations, but segfaults 
> trigger a signal handler, and you're screwed at that point). But writing code 

No, it's easily recoverable. That does not mean however that it would be a good
idea to map segfaults to exceptions as a language feature. And dereferencing a
null pointer is *not* guaranteed to trap, all you need is a large enough offset
and you will get silent data corruption.

   int i = 42;
   auto j = cast(size_t)&i;

   ubyte* p = null;
   p[j] = 13;
   assert(i!=42); // oops

artur


More information about the Digitalmars-d mailing list