如何处理异常

时间:2012-03-09 20:14:54

标签: java exception

我的问题是If假设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 个答案:

答案 0 :(得分:1)

java.lang.ClassNotFoundException是JVM无法通过已配置的classLoaders找到类文件时引发的内容。此异常扩展为Exception

java.lang.NullPointerException是您的变量为null且某些内容尝试访问它时引发的内容。它扩展了RuntimeException,扩展了Exception

答案 1 :(得分:0)

catch(Exception e)将捕获任何异常的异常(几乎所有异常)

答案 2 :(得分:0)

RuntimeException是一种异常。捕获的位置取决于create方法抛出的异常类型。如果异常的类型是或者扩展RuntimeException,它将被捕获,否则它将被捕获在Exception中。那是个问题吗?

登录一个会重新抛出异常的catch块通常是不好的做法。

此外,如果它是RuntimeException,您不知道是否初始化了calTransaction,因此设置状态可能会导致NullPointerException。如果这是你想要避免的,你可以让它抛出某种类型的InitializationException,或者将它移动到之前的try / catch。