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