null dereference exception vs. segfault?
Ryan W Sims
rwsims at gmail.com
Mon Aug 2 11:33:30 PDT 2010
On 8/2/10 10:33 AM, bearophile wrote:
> Mafi:
>> If you want a NullPointerException as part of your program flow, you can
>> use enforce() (in std.contracts I think). I don't think catching a
>> NullPointerException in a big code block where you don't know which
>> dereferencing should fail is good style.
>
> enforce() is not a panacea (panchrest); as far as I know DMD doesn't inline any function that contains enforce(). So sometimes an assert() is better, especially if it's inside a contract (precondition, etc). DesignByConstrac-style programming is not something that just happens, you have to train yourself for some time for it.
>
> Bye,
> bearophile
The problem isn't how to check it on a case-by-case basis, there are
plenty of ways to check that a given pointer is non-null. The problem is
debugging _unexpected_ null dereferences, for which a NPE or its
equivalent is very helpful, a segfault is _not_.
Sorry, didn't mean to reopen a can of worms, just wanted to be clear.
--
rwsims
More information about the Digitalmars-d-learn
mailing list