Java / Eclipse - определить возможные исключения, не форсируя их? - PullRequest
1 голос
/ 20 октября 2011

У меня есть ваше стандартное try/catch утверждение:

try
{
  // Do a bunch of stuff
}
catch ( Exception e )
{
  throw e;
}

Есть ли способ определить, какие возможные исключения могут быть получены из моего кода, не пытаясь заставить мой код завершиться с ошибкой, чтобы увидеть, какой тип исключения e есть?

Например, если я сделал несколько HTTP-вызовов или, возможно, некоторые JSON-вещи, которые я хочу обработать по-другому, мой код может выглядеть так:

try
{
  // Do a bunch of stuff
}
catch ( HttpException e )
{
  // Do something
  throw e;
}
catch ( JSONException e )
{
  // Do something else
  throw e;
}
catch ( Exception e )
{
  throw e;
}

Но, возможно, я делаю целую кучу вещей в своем коде, и я не уверен (из-за отсутствия опыта Java), какие возможные исключения могут быть пойманы ...

Есть ли какой-нибудь возможный способ использования Eclipse для просмотра набора кода и получения списка всех возможных типов исключений, которые могут быть перехвачены?

Ответы [ 3 ]

3 голосов
/ 20 октября 2011

Ну, есть два типа исключений: проверенные и непроверенные.

Вы не можете получить список всех непроверенных исключений, потому что они могут не сказать вам, что они.(Они могут, если вы прочитаете документацию для библиотек, которые вы используете.)

Для проверенных исключений вы не сможете скомпилировать код, если вы не перехватите их все.Я бы просто удалил блок Exception e и скомпилировал его.Честно ловить каждое исключение - плохая идея, если вы действительно не готовы с этим справиться.

1 голос
/ 20 октября 2011

Нет способа получить список возможных непроверенных исключений.Так как они нигде не объявлены (они создаются на лету), это просто невозможно без довольно специфического инструмента анализа кода - и даже в этом случае он может не получить некоторые из классов скомпилированной библиотеки.

Для примеров хитростивещи, которые можно предсказать, считают, что все, что выделяет память, может вызвать исключение нехватки памяти, и вы можете даже создать исключительное отражение, которое было бы почти невозможно найти с ЛЮБЫМИ инструментами статического анализа.

Если вы действительно действительно параноидальны, выможет поймать RuntimeException, который должен получить все непроверенные исключения, с которыми вы бы хотели иметь дело - это не рекомендуемая тактика, но может предотвратить сбой вашей программы из-за неизвестной / невидимой ошибки в будущем ...

Это хорошая формапомещать любые исключения в комментарии, но эта практика не всегда соблюдается.

0 голосов
/ 20 октября 2011

В NetBeans и, возможно, в Eclipse, если вы просто введете код без какого-либо блока try-catch, IDE подскажет вам, какие исключения будут выброшены, и предложит обернуть операторы в блок try-catch. Это, вероятно, самый простой способ отловить все возможные исключения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...