Если в doSomething
нет оператора throws
(например, doSomething() throws IOException
), любые возникшие исключения будут экземпляром RuntimeException
.Если вы хотите узнать точный класс исключения, выдаваемого doSomething
, вы всегда можете попробовать
try {
doSomething();
} catch (RuntimeException e){
System.out.println(e.getClass().getName());
}
Знать, какие исключения времени выполнения могут быть сгенерированы без фактического запуска программы, сложно.Даже если ни один из кодов, которые doSomething()
вызывает, не имеет явного выброса, основные java-операции всегда могут выбросить NullPointerException
, ArrayIndexOutOfBoundsException
и т. Д. С неправильным вводом.Вот несколько идей:
- Копать вручную.По крайней мере, вы будете знать некоторые исключения.
- Используйте рефлексию, чтобы найти любые операторы throw, доступные из
doSomething
. - .Хорошие тесты покажут важные ошибки, к которым должны быть готовы абоненты
doSomething
. - Идите к людям, которые поставили улов на первое место
В любом случае этоОбычно хорошей идеей является отлов исключений, которые являются как можно более конкретными, поскольку вы точно не знаете, что пошло не так, когда вы пытаетесь обработать все случаи в одном предложении.