Why null reference not showing crash.

monkyyy crazymonkyyy at gmail.com
Sat Aug 2 22:02:38 UTC 2025


On Saturday, 2 August 2025 at 20:29:22 UTC, Brother Bill wrote:
> From page 233 of "Programming in D".
> ```
> import std.stdio;
> import std.exception;
>
> void main() {
> 	MyClass variable;
> 	use(variable);
> }
>
> class MyClass {
> 	int member;
> }
>
> void use(MyClass variable) {
> 	writeln("variable: ", variable);
> 	
> 	try {
> 		writeln(variable.member); // ← BUG
> 	} catch (Exception ex) {
> 		writeln("Exception: ", ex);
> 	}
> }
> ```
>
> Why does this run, but not display expected null reference 
> exception?

Not all errors are exceptions, Expection is just a class in the 
std, and then theres Error which is "more important" and 
`catch(Error)` gets you some extra cases, you can define your 
own. etc.

For most cases of `try` to do anything someone had to write a 
literal `Throw`

but I think the os kills you before you even passed something to 
writeln. Fundmentally youd have to have *every* access of a class 
be null checked, which I bet people want, but must not be part of 
the 30 year old c compiler that d comes from.


More information about the Digitalmars-d-learn mailing list