Throwing java.lang.Error or java.lang.RuntimeException is almost never acceptable.