我正在生成嵌入maven网站的Checkstyle
报告,并指出其中一个问题Catching exception is not allowed
。我该如何解决这个问题?我只是不想简单地删除代码,如果我没有其他替代方案来解决这个问题。
public void contextInitialized(ServletContextEvent event) {
super.contextInitialized(event);
ServletContext context = event.getServletContext();
setupContext(context);
LoggingHandler logging = (LoggingHandler) AppContext.getBean( "loggingHandler" );
try {
loadClientUserData( context, logging );
loadMBeans( context, logging );
} catch (Exception e) {
throw new RuntimeException( "Error during startup of service !!!" );
}
}
我仍然在学习Java
,所以我们将不胜感激。
由于
答案 0 :(得分:5)
它警告你的是,抓住Exception
是一个坏主意。 Exception
是您可以捕获的最常见的异常类型。你基本上是在说“无论问题,我能处理它。”这不是真的。可能会发生任何奇怪和奇妙的问题:键盘中断,磁盘空间已满,列表继续。
你说loadClientUserData
会抛出一个ManagerException
,所以你应该抓住那个特定的异常并让其他人继续进一步宣传:
try {
loadClientUserData( context, logging );
loadMBeans( context, logging );
} catch (ManagerException e) {
throw new RuntimeException( "Error during startup of service !!!" );
}
有关详细信息,请参阅以下问题:
答案 1 :(得分:2)
你正在捕捉一个通用例外,并且对于看起来像Checkstyle的问题什么都不做。您可以通过创建抑制文件来重新抛出异常,更好地处理它,或忽略Checkstyle验证。
答案 2 :(得分:0)
你应该抓住最简单的Exception子类,因为这里的解释太冗长了,但是简单的Exception包括未经检查的异常。
如果您的方法声明为throws Exception
,那么风格问题也是如此。