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.

Reply via email to