java throw new Exception throw e

  public static void main(String[] args) {
    try {
      ttt();
    } catch (Exception e) {
      logger.error("err", e);
    }
  }

  public static void ttt() {
    try {
      ttt2();

    } catch (Exception e) {
      logger.error("err", e);
      throw e;
    }
  }

  public static void ttt2() {
    int count = 1 / 0;
  }

catch后打印e

catch后不打印e

结论?

如果项目代码里面有统一异常处理
如spring的 @ControllerAdvice. @ExceptionHandler(BindException.class) 中打印了整个异常堆栈.

我们在方法里面logger一次e,会导致重复打印,日志不好看。

所以只需要选其一,如果没有统一异常处理,还是内部方法都打印e比较好;
如果有,那可以只打印相关错误信息,或者直接throw原来的,不要catch了,只打印原ex.又继续抛出新的

  public static void ttt(String param) {
    try {
      ttt2();

    } catch (Exception e) {
      // catch后
      logger.error("err. param:{}", param);
      throw new RuntimeException("hello err");
    }
  }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章