If you're using third party code that is returning , it's much better to check the return value. Edit: Java 8 is out! This should now be A is insidious and misleading, because it means you have an error somewhere else, where a variable was set to without you expecting it to be. I repeat, the bug isn't where the was thrown, the bug is earlier in your code, where a variable was set to without you expecting it to be. Catching the means you're hiding or excusing the actual bug.