我的问题是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());
}
答案 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。