Поймать чужое исключение - PullRequest
0 голосов
/ 01 июля 2010

У нас есть сторонний Java-код, который выдает безголовое исключение. Можем ли мы поймать это в нашем коде? Проблема в том, как мы узнаем, какой сторонний код (который входит в jar-файл) выдаст исключение. У нас нет сторонних документов по API.

Ответы [ 4 ]

1 голос
/ 01 июля 2010

Вы определенно можете поймать его в своем коде, заключив эти сторонние вызовы в блок try / catch.

Что касается знания типа исключения без документации, это сложнее. Метод проб и ошибок, распечатывая тип исключения во время разработки. Или развиваться в очень плотных try / catch блоках, которые ловят открытое Exception.

0 голосов
/ 01 июля 2010

Вы говорите о java.awt.HeadlessException? Согласно документации:

Выдается, когда код, зависящий от клавиатуры, дисплея или мыши, вызывается в среде, которая не поддерживает клавиатуру, дисплей или мышь.

Конечно, вы можете попытаться поймать это, но как это вам поможет? Эта сторонняя библиотека, вероятно, не сможет работать, например, на сервере, на котором нет клавиатуры, дисплея или мыши.

0 голосов
/ 01 июля 2010

Мне непонятно, что вы подразумеваете под безголовым исключением.

Проблема в том, что если вы не знаете, какие методы могут иметь исключения, вам придется перехватывать каждый раз, когда вы вызываете этот сторонний API. Возможно, вы захотите иметь некоторый уровень абстракции над этим API, который просто делегирует и упаковывает каждый вызов с try{call()} catch(Exception e){...}

0 голосов
/ 01 июля 2010

Ну,

В идеальном случае вам следует прекратить использование стороннего API.Поскольку вы уже используете его, было бы намного лучше, если бы вы написали обертки и использовали его.

  • Создание промежуточного слоя
  • Четкое определение пользовательских исключений
  • Попробуйте проанализировать основные методы стороннего API и увидеть уязвимые точки, где, по вашему мнению, могут возникнуть исключения
  • Оперативно бросайте их везде, где это возможно
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...