Re: Use of AssertionError



Joshua Cranmer wrote:
Having just read the NullPointerException-IllegalArgumentException-AssertionError thread, I was just wondering if my use of AssertionError in one case was valid. This is a very pared-down interface of the code:


// Edited for simplicity
public static void getClass(String name) {
for (SourceHandler handler : handlers) {
if (handler.hasClass(name))
return; // Use this handler as the class
}
// Since our last handler claims to handle everything, we should
// never get here.
throw new AssertionError();
}
}

Where I throw the assertion error explicitly, I want to put an `assert false;' statement in (with a comment, of course), but then I would need to insert a `return null;' at the end of the method, which would invalidate the method contract which forbids null as a result but assertions may not be on.

Is it more appropriate to put a RuntimeException or other type of error instead of using an AssertionError here?

If it ever did happen you would be annoyed that the error message didn't include the name for which no handler was found. So at least pass 'name' to the constructor.

Mark Thornton
.



Relevant Pages

  • Use of AssertionError
    ... NullPointerException-IllegalArgumentException-AssertionError thread, I was just wondering if my use of AssertionError in one case was valid. ... This is a very pared-down interface of the code: ... public static void addHandler(SourceHandler handler) { ...
    (comp.lang.java.programmer)
  • Re: Use of AssertionError
    ... // Use this handler as the class ... Is it more appropriate to put a RuntimeException or other type of error instead of using an AssertionError here? ... The program is in an illegal state, therefore IllegalStateException. ... Client code will not be able to recover from an AssertionError. ...
    (comp.lang.java.programmer)
  • Re: Use of AssertionError
    ... // Use this handler as the class ... Is it more appropriate to put a RuntimeException or other type of error instead of using an AssertionError here? ... The program is in an illegal state, therefore IllegalStateException. ... Client code will not be able to recover from an AssertionError. ...
    (comp.lang.java.programmer)
  • Re: Use of AssertionError
    ... // Use this handler as the class ... Is it more appropriate to put a RuntimeException or other type of error instead of using an AssertionError here? ... The program is in an illegal state, therefore IllegalStateException. ... Client code will not be able to recover from an AssertionError. ...
    (comp.lang.java.programmer)