Как обрабатывать исключения - PullRequest
0 голосов
/ 10 марта 2012

Мой вопрос: если предположим, что CalTransactionFactory не инициализирован или класс не существует.Затем я хочу поймать это исключение и выбросить исключение.Так что это должно быть под RuntimeException или Exception.ниже код

try {
  calTransaction = CalTransactionFactory.create("PDS_GeoLocationService");
  calTransaction.setName("GetLocationByIp");
  calEvent=CalEventFactory.create("PersonalizationGeoLocationService");
  calEvent.setName("IPAddress");
  calEvent.addData("RemoteIP",ipAddress);

  calEvent.completed();             

  calTransaction.setStatus("0");

} catch (RuntimeException re) {
  calTransaction.setStatus(re);
  getLogger().log(LogLevel.ERROR, "CAL is not initialized" +re.getMessage());
  throw re;
}
catch (Exception e) {
  getLogger().log(LogLevel.ERROR, "CAL is not initialized" +e.getMessage());
}

Ответы [ 3 ]

1 голос
/ 10 марта 2012

java.lang.ClassNotFoundException - это то, что выдается, когда JVM не может найти файлы классов через настроенные загрузчики классов. Это исключение распространяется на Exception.

java.lang.NullPointerException - это то, что выдается, когда ваша переменная null и что-то пытается получить к ней доступ. Это расширяет RuntimeException, что расширяет Exception.

0 голосов
/ 10 марта 2012

RuntimeException - это тип исключения. Где это перехватится, зависит от типа исключения, сгенерированного методом create. Если тип исключения равен или расширяет RuntimeException, он будет перехвачен там, в противном случае он будет перехвачен в исключении. Это вопрос?

Обычно входить в блок перехвата, который будет перебрасывать исключение, обычно не рекомендуется.

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

0 голосов
/ 10 марта 2012

catch(Exception e) поймает ЛЮБОЕ исключение, которое является подклассом Исключения (практически все)

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