- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有两个不同的方面类,方面类 1 将处理所有 Controller 文件中发生的任何异常,而另一个方面类 2 将处理仅在一个特定 Controller 文件中发生的少数特定异常。我已经指定了优先顺序,使方面类 2 的优先级高于方面 1。方面类 1 如下
@Aspect
@Order(1)
public class TrackOperations {
@Around("apiPointcut()")
public Object handleException(ProceedingJoinPoint pjp) throws Throwable {
try {
return pjp.proceed();
} catch (Exception e) {
LOGGER.error("Caught exception: ", e);
StringBuilder sb = getExceptionTrace(e);
StringWriter errorStackTrace = new StringWriter();
e.printStackTrace(new PrintWriter(errorStackTrace, true));
response.addError(error);
return new ResponseEntity<String>(JsonUtil.toJson(response), HttpStatus.INTERNAL_SERVER_ERROR);
}}
方面类别 2
@Aspect
@Order(0)
public class TrackServiceOperations {
@Around("apiPointcut()")
public Object handleServerException(
try {
return pjp.proceed();
} catch (HttpClientErrorException | HttpServerErrorException e) {
response = (Response<String>) ContextUtil.get(key);
response.addError(new Error("Assessment Service Status Code: " + e.getStatusCode(), ErrorConstants.REQUEST_FAILED));
LOGGER.error("Recieved" + e.getStatusCode() + " status from Assessment Service");
return new ResponseEntity<String>(JsonUtil.toJson(response), HttpStatus.OK);
}
}}
在应用程序 xml 中提到了相同的内容
<bean id="TrackServiceOperations" class="in.foo.foo.TrackServiceOperations" factory-method="aspectOf" />
<bean id="TrackOperations" class="in.foo.foo.TrackOperations" factory-method="aspectOf" />
但是当 Controller 文件抛出所需的异常时,方面类 1 最终会处理异常,而不是方面类 2。当我禁用方面类 1 时,事情会按预期正常工作,但是当我同时使用 @around 切入点时,优先顺序似乎不起作用。我在这里遗漏了什么吗?
最佳答案
方面类 1 正在处理 HttpClientErrorException 和 HttpServerErrorException 派生自的通用异常。因此,当您希望在方面类 2 中处理异常时,它们已经被方面类 1 的处理程序覆盖。
要解决此问题,您可以检查方面类 1 处理程序中的异常类型,并重新抛出您想要在方面类 2 中处理的那些特殊异常。(这感觉像是一个拼凑,因为它现在有方面 1 了解方面的内容2).
public Object handleException(ProceedingJoinPoint pjp) throws Throwable {
try {
return pjp.proceed();
} catch (Exception e) {
(if e instance of org.springframework.web.client.HttpStatusCodeException || e instanceof org.springframework.web.client. HttpServerErrorException) throw e;
LOGGER.error("Caught exception: ", e);
StringBuilder sb = getExceptionTrace(e);
StringWriter errorStackTrace = new StringWriter();
e.printStackTrace(new PrintWriter(errorStackTrace, true));
response.addError(error);
return new ResponseEntity<String>(JsonUtil.toJson(response), HttpStatus.INTERNAL_SERVER_ERROR);
}}
关于java - 同一连接点上有多个 @Around AspectJ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34144145/
我有以下情节 require(ggplot2) dtf <- structure(list(Variance = c(5.213, 1.377, 0.858, 0.613, 0.412, 0.229,
我可以捕获算术中定义的连接点吗? 类似于: int a = 4; int b = 2; int c = a + b; 我可以创建一个切入点来捕获这些行中的任何一行吗?我可以获得什么背景信息? 我想添加
我编写了以下代码,用于使用鼠标事件添加和删除点或圆。下一步是在创建它们时用一条线将它们连接起来(创建一个多边形)。我完全卡住了,不知道从哪里开始。我正在寻找文档,但如果有人能指出正确的方向,我将不胜感
我读过 Evans、Nilsson 和 McCarthy 等书,了解领域驱动设计背后的概念和推理;但是,我发现很难将所有这些放在一个真实世界的应用程序中。缺乏完整的例子让我摸不着头脑。我找到了很多框架
有没有办法在 Python 中创建 NTFS 连接点?我知道我可以调用 junction 实用程序,但最好不要依赖外部工具。 最佳答案 自 Python 3.5 以来,_winapi 模块中有一个函数
Swing (Java 1.6.0_u25) 中的 JFileChooser 似乎不知道如何处理 NTFS 连接点或符号链接(symbolic link)。 文件选择器没有特殊处理: int rv =
这个问题在这里已经有了答案: Check if a file is real or a symbolic link (9 个回答) 关闭 5 年前。 有谁知道如何检查文件或目录是否是符号链接(sym
我是一名优秀的程序员,十分优秀!