0

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

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

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

4

2 回答 2

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().

于 2013-05-08T15:18:07.167 回答
0

也许您可以尝试 Spring AOP 类型“在抛出建议后 - 在方法抛出异常后运行”您可以在这里查看简单示例: http ://www.mkyong.com/spring/spring-aop-examples-advice/

于 2013-05-08T15:45:51.873 回答