Если при вызове метода вы точно знаете, что он не сгенерирует исключение из-за предыдущих проверок, вы должны выбросить RuntimeException
, обертывающий SpecificException
.
try {
StaticClass.method(someobject);
} catch (SpecificException e) {
//This is unexpected and should never happen.
throw new RuntimeException("Error occured", e);
}
Некоторые методы уже выдаютRuntimeException, когда им не удается выполнить свое предназначение.
//Here we know for sure that parseInt(..) will not throw an exception so it
//is safe to not catch the RuntimeException.
String s = "1";
int i = Integer.parseInt(s);
//Here instead parseInt(..) will throw a IllegalArgumentException which is a
//RuntimeException because h is not a number. This is something that should
//be fixed in code.
s = "h";
i = Integer.parseInt(s);
RuntimeException - не требует блока try / catch, и компилятор не будет злиться на вас за то, что он не перехватил их.Обычно они создаются там, где что-то в коде вашего приложения неверно и должно быть исправлено.В любом случае, есть случаи, когда перехват RuntimeException полезен.