Существует ли внутренняя концепция исключения в java
. Чистое исключение может содержать внутренние исключения? Я хочу знать, есть ли у Java аналогичная вещь или нет?
Ответы
Ответ 1
Абсолютно - вы можете получить внутреннее исключение ( "причина" ), используя Throwable.getCause()
. Чтобы создать исключение с причиной, просто передайте его в конструктор. (Большинство исключений имеет конструктор, принимающий причину, где это имеет смысл.)
Ответ 2
Вы можете установить внутреннее исключение (AKA причина) двумя способами. Если вы сами создаете исключение, передайте внутреннее исключение для конструктора (внешнего) исключения, например.
try {
// some code that throws innerException
} catch (Exception innerException) {
throw new OuterException(innerException);
}
С другой стороны, если внешнее исключение не имеет конструктора, который позволяет вам установить внутреннее исключение или не создавать экземпляр внешнего исключения самостоятельно, вы можете установить его с помощью
outerException.initCause(innerException);
Ответ 3
Так как Java 1.4, java.lang.Throwable
имеет конструкторы, которые принимают еще один параметр Throwable
и метод getCause()
, который возвращает его. Практически все исключения в стандартном API и большинство из тех, которые реализованы в других библиотеках, используют этот объект.
Ответ 4
Все исключения могут быть привязаны к Java. Это означает, что вы можете исключить исключение и предоставить другое исключение (на самом деле, Throwable) в качестве причины исключения, которое вы бросаете. Посмотрите javadoc для Exception.