Use of AssertionError
- From: Joshua Cranmer <Pidgeot18@xxxxxxxxxxxxxxx>
- Date: Sun, 30 Dec 2007 20:50:44 GMT
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:
import java.util.*;
public final class ClassPool {
public interface SourceHandler {
public boolean hasClass(String name);
}
private static List<SourceHandler> handlers =
new LinkedList<SourceHandler>();
static {
// add a few handlers to the list...
handlers.add(new SourceHandler() {
public boolean hasClass(String name) {
return true;
}});
// This is not really an anonymous inner class, but it is the
// best way for me to make it compilable
}
// The user can add handlers but can never remove them.
public static void addHandler(SourceHandler handler) {
handlers.add(0, handler);
}
// 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?
--
Beware of bugs in the above code; I have only proved it correct, not tried it. -- Donald E. Knuth
.
- Follow-Ups:
- Re: Use of AssertionError
- From: Lew
- Re: Use of AssertionError
- From: Mark Thornton
- Re: Use of AssertionError
- Prev by Date: New File with a Directory
- Next by Date: Re: The Closure Controversy
- Previous by thread: New File with a Directory
- Next by thread: Re: Use of AssertionError
- Index(es):
Relevant Pages
|