我要count
exceptions
发生exceptions
次,并同时记录这些addException
。所以我做的是,我创建了一个方法addException
,其中我计算所有异常。
one is the String
方法将接受两个参数boolean flag
,而另一个是catch
,这意味着我们是否因为任何异常而终止程序。意思是,如果该标志为真,那么只要有任何异常,我就需要终止程序。
因此,如果您查看下面的addException
块,我会调用catch (ClassNotFoundException e) {
addException(e.getCause() != null ? e.getCause().toString() : e.toString(), Read.flagTerminate);
LOG.error("Threw a ClassNotFoundException in " + getClass().getSimpleName(), e);
} catch (SQLException e) {
addException(e.getCause() != null ? e.getCause().toString() : e.toString(), Read.flagTerminate);
//DAMN! I'm not....
LOG.error("Threw a SQLException while making connection to database in " + getClass().getSimpleName(), e);
}
/**
* A simple method that will add the count of exceptions and name of
* exception to a map
*
* @param cause
* @param flagTerminate
*/
private static void addException(String cause, boolean flagTerminate) {
AtomicInteger count = exceptionMap.get(cause);
if (count == null) {
count = new AtomicInteger();
AtomicInteger curCount = exceptionMap.putIfAbsent(cause, count);
if (curCount != null) {
count = curCount;
}
}
count.incrementAndGet();
if(flagTerminate) {
System.exit(1);
}
}
方法来计算异常,并且在方法调用之下我也会记录异常。
addException
问题陈述: -
现在我要找的是 -
有没有更清洁的方式做同样的事情?现在意思我在计算方法中的异常,然后在catch块内的下一行打印出异常。
是否可以使用相同的addException method
方法执行这两项操作?如果该标志为true,则终止程序,然后使用正确的日志记录终止程序。
重写{{1}}的最佳方法是什么? 谢谢你的帮助。
答案 0 :(得分:0)
有没有更清洁的方式做同样的事情?意思是对的 现在我在计算方法中的异常,然后打印出来 在catch块内的下一行中的异常。
是否可以在同一个addException中执行这两个操作 方法?如果该标志为true则终止该程序,那么 也可以使用正确的日志记录终止程序。
是的,不是将String cause传递给addException
方法,而是可以根据需要传递异常本身和标志。甚至可以完全捕捉addException
方法,如:
catch (ClassNotFoundException|SQLException e) {
addException(e, Read.flagTerminate);
}
或
catch (Exception e) {
addException(e, Read.flagTerminate);
}
甚至:
catch (ClassNotFoundException e) {
addException(e, Read.flagTerminate, "Threw a ClassNotFoundException in "); //An the addException method logs the message passed.
} catch (SQLException e) {
addException(e, Read.flagTerminate, "Threw a SQLException while making connection to database in ");
}
您可以在类中创建一个映射,其中存储了哪些异常应该停止执行,哪些不应该执行,因此您只需要addException(Exception e)
方法。
您甚至可以为每种类型的异常创建一个具有本地化消息的属性文件,并默认记录该消息。
您还可以查看@perception建议的链接: