Java @异常处理程序未启动
这在谷歌土地上被问了好几次,但我似乎无法将这些决议应用到我的情况中。我的J2EE应用程序使用Spring,我以前使用SimpleMappingExceptionResolver拦截异常,为我的用户显示友好的错误页面。我的团队中有一个人有自己的包,他正在使用一个扩展的异常类作为工具,将验证错误传达给他的用户。因此,现在每当用户输入无效数据时,它都会触发一个异常页面。他拒绝更改代码(即使我认为他应该这样做),所以现在我被迫在处理包或控制器特定的事情时出错 我试图利用Java @异常处理程序未启动,java,spring,spring-mvc,exception-handling,Java,Spring,Spring Mvc,Exception Handling,这在谷歌土地上被问了好几次,但我似乎无法将这些决议应用到我的情况中。我的J2EE应用程序使用Spring,我以前使用SimpleMappingExceptionResolver拦截异常,为我的用户显示友好的错误页面。我的团队中有一个人有自己的包,他正在使用一个扩展的异常类作为工具,将验证错误传达给他的用户。因此,现在每当用户输入无效数据时,它都会触发一个异常页面。他拒绝更改代码(即使我认为他应该这样做),所以现在我被迫在处理包或控制器特定的事情时出错 我试图利用@ExceptionHandler
@ExceptionHandler
注释来实现这一点,但它似乎没有启动。我做错了什么?我希望调用dmapproval
来返回applicationError
视图
这是我的控制器:
@Controller
public class ExecutiveApprovalController {
/*omitted stuff*/
@ExceptionHandler(Exception.class)
public String routToErrorHandler(Exception anExc) {
return "applicationError";
}
@RequestMapping(value = "/dmapproval", method = RequestMethod.GET)
public String dmApproval(Model model, HttpServletRequest request) throws Exception {
throw new RuntimeException(); // just for testing exception logic
}
/*omitted stuff here, too*/
}
谢谢你的帮助 您的代码片段看起来不错;您的代码与我正在使用的代码之间的唯一区别在于,我对异常处理程序方法进行了如下注释:
@ExceptionHandler(Throwable.class)
作为旁白;这远不如使用
SimpleMappingExceptionResolver
(听起来您已经知道了!)那么优雅。我会要求你的流氓队友重新考虑他的验证方法,只在特殊情况下使用异常;) 您的代码片段看起来不错;您的代码与我正在使用的代码之间的唯一区别在于,我对异常处理程序方法进行了如下注释:
@ExceptionHandler(Throwable.class)
作为旁白;这远不如使用
SimpleMappingExceptionResolver
(听起来您已经知道了!)那么优雅。我会要求你的流氓队友重新考虑他的验证方法,只在特殊情况下使用异常;) 您是否在servlet-context.xml中添加了此配置
<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerExceptionResolver">
您是否在servlet-context.xml中添加了此配置
<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerExceptionResolver">
您的调度器中是否实际包含
,或者您是否手动设置了各种视图分解器/方法分解器组件?我正在webmvc-config.xml文件中使用
。您的调度器中是否实际包含
,或者您是否手动设置了各种视图分解器/方法分解器组件?我正在使用
在我的webmvc-config.xml文件中。感谢您的回复。一定是出了什么问题;即使在使用了Throwable.class
之后,我仍然收到放弃消息错误500:org.springframework.web.util.NestedServletException:请求处理失败;嵌套异常是前端的java.lang.RuntimeException
。不幸的是,我似乎无法改变他的想法。如果你把它改为:@ExceptionHandler(RuntimeException.class)行吗?不,不行。我真的希望这能奏效。也许有一些配置阻止它正常工作?Spring是否有一个org.springframework.web.servlet.handler
类,该类具有nothing,其工作方式与您期望的
属性相同,我可以将其设置为false?它必须是其他地方的一些配置。是否确定已删除SimpleMappingExceptionResolver配置?如果不能做到这一点,恐怕我不知道还有什么好建议,我唯一的其他途径就是查看@ControllerAdvice,但我担心这对您来说可能不够细粒度……SimpleMappingExceptionResolver已被注释。你知道我的配置哪里出了问题吗?发布更多的代码在某种程度上会有所帮助吗?谢谢你的回复。一定是出了什么问题;即使在使用了Throwable.class
之后,我仍然收到放弃消息错误500:org.springframework.web.util.NestedServletException:请求处理失败;嵌套异常是前端的java.lang.RuntimeException
。不幸的是,我似乎无法改变他的想法。如果你把它改为:@ExceptionHandler(RuntimeException.class)行吗?不,不行。我真的希望这能奏效。也许有一些配置阻止它正常工作?Spring是否有一个org.springframework.web.servlet.handler
类,该类具有nothing,其工作方式与您期望的
属性相同,我可以将其设置为false?它必须是其他地方的一些配置。是否确定已删除SimpleMappingExceptionResolver配置?如果不能做到这一点,恐怕我不知道还有什么好建议,我唯一的其他途径就是查看@ControllerAdvice,但我担心这对您来说可能不够细粒度……SimpleMappingExceptionResolver已被注释。你知道我的配置哪里出了问题吗?发布更多代码是否有帮助?添加对AnnotationMethodHandlerExceptionResolver的引用也没有帮助。添加对AnnotationMethodHandlerExceptionResolver的引用也没有帮助。