The message on Java exceptions is very helpful. But even that isn't always enough to diagnose a runtime failure.
java.lang.NullPointerException
at square.cash.Emailer.expired(Emailer.java:348)
at square.cash.Processor.process(Processor.java:99)
at square.queue.Queue.run(Queue.java:251)
I'd love to see a Java runtime that lets me annotate my locals:
public void process(*@InStackTrace* long id) {
...
}
... and then includes those locals in stacktraces:
java.lang.NullPointerException
at square.cash.Emailer.expired(Emailer.java:348)
at square.cash.Processor.process(Processor.java:99) *id=123*
at square.queue.Queue.run(Queue.java:251)
If you're working on a VM that runs Java programs, please build this for me!