【问题标题】:Spring MVC Best Practice Handling Unrecoverable Exceptions In ControllerSpring MVC 最佳实践处理控制器中不可恢复的异常
【发布时间】:2011-02-02 00:59:26
【问题描述】:

如果您有一个控制器对可能引发不可恢复异常的服务和 DAO 执行逻辑,那么处理这些方法调用的最佳做法是什么?

目前我正在开发的一个应用程序有很长的 try catch 方法,这些方法只是 err.out 异常消息,这似乎不是很健壮,我认为这段代码有异味,是否有任何 cookie 切割器最佳实践来处理这个在 spring-mvc 中?

【问题讨论】:

    标签: java exception-handling spring-mvc


    【解决方案1】:

    不要捕获异常并让它冒泡到HandlerExceptionResolver

    您可以在 applicationContext 中提供SimpleMappingExceptionResolver 以将某些异常类型(或全部)映射到视图名称(例如“errorpage”)。或者,如果您需要更复杂的逻辑,您可以提供自己的实现。

    这样,您的代码就不必担心它一开始就无法处理的异常,并且您可以确保您的用户看到一个很好的“糟糕,发生了一些事情,别担心我们正在处理它”页面而不是堆栈跟踪。

    【讨论】:

    • 啊,我有强烈的冲动要使用 HandlerExceptionResolver,顺便说一句,我这样做了,我的同事否决了这个说它是多余的,我很高兴更有经验的 matt b 也这么说。
    【解决方案2】:

    查看@ExceptionHandler

    你可以像这样使用它

    @ExceptionHandler(IOException.class)
    @ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR)
    public void handleExc(IOException ext) {}
    

    这将捕获控制器方法抛出的所有 IOExceptions 并将 500 写入响应。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-01-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-11
      • 2013-05-09
      • 2011-11-10
      • 1970-01-01
      相关资源
      最近更新 更多