如何从它的消息中分离异常类型

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何从它的消息中分离异常类型相关的知识,希望对你有一定的参考价值。

在spring boot应用程序中,我使用@ControllerAdvice处理异常。我能够处理异常。我的JSON消息是状态,错误,异常和路径。当我打印异常字符串时,我得到异常并且它也是消息。

我的定义是在异常参数中如何在没有消息的情况下仅打印异常类型。因为消息我打印错误?

还有一个Quation是我只使用一个类即Exception类处理所有类型的异常。对于每个例外,我在status code作为500。我们可以为不同类型的异常设置不同的状态代码吗?

我们可以在这里传递状态代码throw new NullPointerException("Null values are not allowed");

@Order(Ordered.HIGHEST_PRECEDENCE)
@ControllerAdvice
public class RestExceptionHandler extends ResponseEntityExceptionHandler {

    @ExceptionHandler(Exception.class)
    public ResponseEntity<ExceptionMessage> handleAllExceptionMethod(Exception ex,WebRequest requset,HttpServletResponse res) {   

        ExceptionMessage exceptionMessageObj = new ExceptionMessage();

        exceptionMessageObj.setStatus(HttpStatus.INTERNAL_SERVER_ERROR.value());
        exceptionMessageObj.setError(ex.getLocalizedMessage());     
        exceptionMessageObj.setException(ex.toString());
        exceptionMessageObj.setPath(((ServletWebRequest) requset).getRequest().getServletPath());

        return new ResponseEntity<ExceptionMessage>(exceptionMessageObj, new HttpHeaders(), HttpStatus.INTERNAL_SERVER_ERROR);

}

enter image description here

答案

您需要在邮件上设置名称,如下所示:

exceptionMessageObj.setException(ex.getClass().getCanonicalName());

例如:

System.out.println(new NoClassDefFoundError().getClass().getCanonicalName());

将返回

java.lang.NoClassDefFoundError

以上是关于如何从它的消息中分离异常类型的主要内容,如果未能解决你的问题,请参考以下文章

Python:异常装饰器。如何保留堆栈跟踪

如何在 Java Mission Control 中分析异常?

如何在 Windows 窗体中分离 UI 线程和进程线程

何时在 tableView 单元中分离 firebase 侦听器?

SwiftUI 如何从响应 JSON API 中分离单个数据

模态视图控制器从自定义单元格选择问题中分离 - iOS 7