Java-метод содержит другой метод выдает исключение
Внутри метода A есть метод B. Метод B выдает исключение, но метод A скомпилирован, даже если он не перехватывает исключение или выдает исключение, возможно ли это?
Метод B выглядит примерно так:
MethodB() throws SomeException{
if(Some)
doneSomething
return
else if(some)
donesomethingElse
return
throw SomeException
}
3 ответа
Если SomeException
продолжается RuntimeException
, Тогда вам не нужно ловить его, даже если подпись выглядит так.
Также обратите внимание, что вы можете просто удалить throws SomeException
в таком случае. Узнайте больше здесь.
Да, есть неконтролируемое исключение, которое не может быть поймано / переброшено.
Посмотрите на этот урок - непроверенные исключения.
Даже если SomeException
это проверенное исключение, это может произойти из-за отдельной компиляции.
Предположим, вы пишете класс:
public class B {
public static void foo() {
}
}
Затем класс, который вызывает это:
public class A {
public static void main(String[] args) {
B.foo();
}
}
Тогда скажи:
javac A.java
java A
Все хорошо. Теперь измените B:
public class B {
public static void foo() throws java.io.IOException {
throw new java.io.IOException();
}
}
И на этот раз просто скомпилируйте B перед запуском:
javac B.java
java A
Ты получаешь:
Exception in thread "main" java.io.IOException
at B.foo(B.java:4)
at A.main(A.java:4)
В реальном мире это происходит, когда отдельные файлы.jar обновляются после того, как они были изменены сопровождающими, которые не понимают проблем, вызванных добавлением большего количества файлов. throws
статьи.