Существует ли внутренняя концепция исключения в 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.