On Friday, 27 July 2012 at 19:01:39 UTC, Namespace wrote:
I also get null references (and every time I hate D a bit more), but mostly my classmates and other friends whom I've shown D. And most of them are already back to C++ or C#. And I can understand them. If you want that D is sometimes taken seriously (and it reached only if you win more people for D), then perhaps you should do something for more usability. Such small handy shorthands are easy to implement and even more understandable as a stacktrace.

I've noticed when debugging the 'segfault' is rather vague, but it depends on if you have something to catch it. In some of my code I end up surrounding the main function in a try/catch wrapper that prints the appropriate data; Like using VisualD.

void main() {
  try {
    someFunc(null);
  } catch (Throwable x) {
    writeln(x);
  }
}

void someInnerFunc(Object o)
in {
  assert(o, "Yo! my object's NULL!");
}
body {
  //something
}
void someFunc(Object o) {
  someInnerFunc(o); //for stacktrace
}

core.exception.AssertError@test.d(111): Yo! my object's NULL!
----------------
c:\Users\Era\My Documents\progs\d\test.d(119): void test.someFunc(Object)
c:\Users\Era\My Documents\progs\d\test.d(103): _Dmain



change inner function to:

void someInnerFunc(Object o) {
  o.toHash;
  //something
}

object.Error: Access Violation
----------------
c:\Users\Era\My Documents\progs\d\test.d(116): void test.someFunc(Object)
c:\Users\Era\My Documents\progs\d\test.d(103): _Dmain

Reply via email to