Bootstrap

spring注解@SneakyThrows

java中常见的异常有两种:Exception即非运行时异常(编译异常)、RuntimeException即运行时异常。

对于Exception即非运行时异常(编译异常),必须要开发者解决以后才能编译通过,解决的方法有两种,
        1、throw到上层,
        2、try-catch处理。

对于RuntimeException即运行时异常,在代码中可能会有RunTimeException,但是Java编译检查时是不会告诉你有这个异常的,它会在实际运行代码时则会暴露出来,比如经典的1/0,空指针等。

@SneakyThrows注解是由lombok中封装的注解,它就是为了消除上面那种抛出异常的模板代码。使用注解后,在编译时,自动将注解替换为try-catch。

@SneakyThrows
   public void utf8ToString(byte[] bytes) {
       return new String(bytes, "UTF-8");
   }

真正生成的代码

public void utf8ToString(byte[] bytes) {
    try {
      return new String(bytes, "UTF-8");
    } catch (Exception e) {
      throw Lombok.sneakyThrow(e);
    }
}    

;