NetBeans pops up a dialog with an exception message
when it finds an internal error. And again. And again. And again. And
again. This blog reviews just how user-hostile this behavior is, and
suggests alternatives.
I got up early this morning to get some coding done. Instead, I am
writing this blog.
Something in NetBeans has become unstable, and it pops up this
dialog.

Clicking on "Show Details" revealsi

What's wrong with it?
- Why do I have to report the error? It wasn't my fault in the first
place. NetBeans should offer to report it on my behalf. It is ok to give
me a manual reporting URL; after all, I may not trust the electronic
submission. But that should be my choice.
- Why does the message peter out in the middle of the last sentence? I
tried resizing the dialog, and it doesn't reveal the log location. I
already have a low opinion of software that generates unexpected
exceptions. When I see a sloppy dialog, my confidence goes completely
down the drain.
- Why does the dialog pop up again, and again, and again, and again?
There is no way of turning it off. I tried cleaning the project, closing
and reopening the project, exiting and restarting NetBeans, and the
error keeps popping up. For the love of Mike, if you know that your
software is unstable enough to report the occasional "unexpected
exception", give the user a way to get rid of it.
What can one learn from this? Here are some points worth keeping in
mind if you ever design an error handling mechanism.
- When you report an error, don't piss off the user more than you
have to. Your user is already going to be unhappy at this point.
Make sure you put your best foot forward now. Make a framework for
reporting, and test the heck out of the error reporting process. Don't
tolerate the slightest sloppiness.
- It is a good idea to allow the user to report errors. It makes the
user feel that you want feedback, and it might actually help your QA
effort. Make error reporting super-easy. Your user should be able
to click a button, see the report that you are about to send off, and
click another button to confirm. Also give a manual method for the
paranoid.
- If your software is worth anything to your users, they can't just
wait for you to fix the bug that caused the unexpected error. Don't
stand in the way of continued usage. Give options for recovery,
e.g. to rebuild the internal state, or to turn off inessential features.
- Whatever you do, don't do something as pointless and stupid as
popping up the same error again and again. After seeing that NetBeans
dialog for the tenth time, my brain perceived a subtle change in the
wording. It now seemed to say "Instead of wasting your time, why don't
you try loading this project into Eclipse?"
P.S. I just finished writing this blog, and I got this email:
Hi Cay,
try to delete MDR cache in your userdir. It's stored in your home
directory in .netbeans/var/cache. You can safely delete it, it will be
regenerated.
-Roman
It took care of my problem.
That's another option for dealing with unexpected errors in your
software. Have someone on staff 24/7 to monitor the user forum, and make
sure they reply to complaints faster than it takes disgruntled users to
blog about them.