Может ли кто-нибудь привести пример кода, в котором каждый из них генерируется?
IllegalAccessException
генерируется, когда вы пытаетесь использовать отражение для вызова метода или чтения или записи поля, которое являетсязапрещено правилами видимости Java.
IllegalAccessError
не может быть сгенерировано последовательно скомпилированным кодом Java.Это происходит, когда, например, вы загружаете класс, который пытается вызвать метод или читает или записываете поле в другом классе, что запрещено правилами видимости Java.Это то, что компилятор обычно предотвращает, так что это означает, что с классами что-то серьезно не так.Во всяком случае, это считается «ошибкой»;то есть не подлежит восстановлению, и загрузчик классов откажется загружать нарушающий класс (ы).
Означает ли сходство в названии отношения между ними или это просто чистое совпадение?
Между ними существует четкая связь.Разница заключается в обстоятельствах, при которых они встречаются.
Существуют ли другие комбинации XXXError и XXXException?Как пары связаны друг с другом?
Pass.Проверьте javadocs.
Если вы явно пытаетесь поймать одно в паре Исключение / Ошибка, следует ли вам также поймать другое?
Возможно, нет.XXXError и XXXException обычно возникают при разных обстоятельствах.(Это, безусловно, относится к рефлексивным и классовым загрузчикам.)
Кроме того, по общему правилу вы не должны пытаться поймать и оправиться от подтипов Error
.Смысл отделения Error
от Exception
состоит в том, чтобы отличить невосстанавливаемые и (потенциально) восстанавливаемые исключения.
В этом случае обычное приложение не может ничего сделать для восстановленияот IllegalAccessError
.Если вы попытаетесь повторить операцию загрузчика классов, вызвавшую проблему, это произойдет снова.