ExceptionUtils

package com.test;

import org.apache.commons.lang3.exception.ExceptionUtils;
import org.springframework.security.web.util.ThrowableAnalyzer;

public class ErrorTest {

  private static ThrowableAnalyzer throwableAnalyzer = new ThrowableAnalyzer();

  public static void main(String[] args) {
    try {
      try {
        try {
          int i = 2;
          int j = i / 0;
        } catch (ArithmeticException e) {
          throw new TestRuntimeException("An error occurs inner", e);
        }
      } catch (TestRuntimeException e) {
        throw new TempestRuntimeException("An error occurs outer", e);
      }

    } catch (Exception e) {
      System.out.println(e.getMessage());//An error occurs outer
      System.out.println(e.getCause());//com.test.TestRuntimeException: An error occurs inner
      /*Throwable[] causeChain = throwableAnalyzer.determineCauseChain(e);
      TempestRuntimeException ex = (TempestRuntimeException) throwableAnalyzer
          .getFirstThrowableOfType(
              TempestRuntimeException.class, causeChain);*/

      System.out.println(ExceptionUtils.getMessage(e));//TestRuntimeException: An error occurs outer
      System.out.println(ExceptionUtils.getStackTrace(e));
      System.out.println(ExceptionUtils.getRootCause(e));//java.lang.ArithmeticException: / by zero
      System.out.println(ExceptionUtils.getRootCauseMessage(e));//ArithmeticException: / by zero
      Throwable[] causeChain = ExceptionUtils.getThrowables(e);
    }

  }
}
<dependency>
      <groupId>org.springframework.security</groupId>
      <artifactId>spring-security-web</artifactId>
      <version>5.2.1.RELEASE</version>
    </dependency>
    <dependency>
      <groupId>org.apache.commons</groupId>
      <artifactId>commons-lang3</artifactId>
      <version>3.9</version>
    </dependency>
package com.test;

public class TestRuntimeException extends RuntimeException {
  public TempestRuntimeException(Throwable e) {
    super(e);
  }

  public TestRuntimeException(String string) {
    super(string);
  }

  public TestRuntimeException(String string, Throwable e) {
    super(string, e);
  }
}

 

posted @ 2020-07-07 16:09  tonggc1668  阅读(563)  评论(0编辑  收藏  举报