Acces Violation: assert with null instance
Bradley Smith
digitalmars-com at baysmith.com
Fri Jan 26 01:01:51 PST 2007
Walter Bright wrote:
> You can catch access errors by catching Exception, at least under
> Windows, because I haven't figured out how to do it under Linux.
I know. That is not the point. The point is that evaluation of a null
reference is inconsistent. For an if statement, null is evaluated as
false, but for an assert it is an access violation. See code below.
Conceptually, assert (expression) is nothing more that "if (!expression)
throw new AssertError;". However, it doesn't act that way.
import std.stdio;
class Class {}
void main() {
Class c;
if (!c) {
writefln("c is false?");
}
assert(c);
}
More information about the Digitalmars-d-bugs
mailing list