如何做常见的异常处理

时间:2013-05-08 15:11:22

标签: java spring exception-handling

假设我有大约一百个带有此方法签名的类,这是该类的唯一入口退出方法:

public Map<String,Object> doSome(Map arg1, map arg2)

并且在方法体内有一个try / catch块。 catch块捕获Exception并重新抛出自定义异常。早些时候,该计划将放弃在catch区块中。现在我需要能够返回一个具有键值的Map(“异常”,“有些在这个类中变坏了”)。一种方法是在这个doSome方法中创建一个额外的方法(并将当前代码推送到新方法中)并使用try / catch包围此方法调用,并在catch块中捕获自定义异常并编写泛型方法填充返回的地图
对于所有100多个班级来说,实现这一目标的最佳方法是什么? 我想知道是否可以使用Spring AOP实现这样的事情?但是我遇到的大多数春季建议都不允许返回值(意味着控件永远不会回到抛出异常的位置)。
如果有人可以向我指出具体的例子,那就太好了。

2 个答案:

答案 0 :(得分:1)

这听起来像是可以通过父类提供的某些功能来解决的。

让你的每100个课程(真的,100 ??!)扩展一个抽象的父类。让父类定义doSomething方法:

public Map<String,Object> doSome(Map arg1, Map arg2) {

  try {
    doSomething(arg1, arg2);
  } catch (Exception e) {
    // clever handling here
  }
}

确保在doSomething()中将ExceptionHandler方法定义为抽象方法。当然,欢迎使用更好的方法名称。

每个子类都会实现自己的doSomething()变体。

答案 1 :(得分:0)

可能你可以尝试Spring AOP类型“抛出建议后 - 在方法抛出异常后运行”你可以在这里看一下这个简单的例子:     http://www.mkyong.com/spring/spring-aop-examples-advice/