@SneakyThrows注解
Posted 沛沛老爹
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了@SneakyThrows注解相关的知识,希望对你有一定的参考价值。
作用
@SneakyThrows就是使用该注解后不需要担心Exception的异常处理。
在说Exception之前,我们先简单聊下Error和Exception的差异
Error和Exception
Error是编译时错误和系统错误,系统错误在非特殊情况下,基本不会出现。而编译时错误,如果你使用了编译器,那么编译器会提示。
Exception则是可以被抛出的基本类型,我们需要主要关心的也是这个类。
Exception又可以根据运行时间来看,可以分为RunTimeException和其他Exception。
RunTimeException和其他Exception
其他Exception,受检查异常。可以理解为错误,必须要开发者解决以后才能编译通过,解决的方法有两种,
1:throw到上层,
2,try-catch处理。
RunTimeException:运行时异常,又称不受检查异常,不受检查,因为不受检查,所以在代码中可能会有RunTimeException时Java编译检查时不会告诉你有这个异常,但是在实际运行代码时则会暴露出来。如果不处理也会被Java处理。 例如报500异常。
@SneakyThrows的作用
现实大部分情况下的异常,我们都是一路往外抛了事。所以渐渐的java程序员处理Exception的常见手段就是外面包一层RuntimeException,接着往上丢
try
catch(Exception e)
throw new RuntimeException(e);
而Lombok的@SneakyThrows就是为了消除这样的模板代码。
使用注解后不需要担心Exception的处理
import lombok.SneakyThrows;
public class SneakyThrowsExample implements Runnable
@SneakyThrows(UnsupportedEncodingException.class)
public String utf8ToString(byte[] bytes)
return new String(bytes, "UTF-8");
@SneakyThrows
public void run()
throw new Throwable();
起通过编译器生成真正的代码:
import lombok.Lombok;
public class SneakyThrowsExample implements Runnable
public String utf8ToString(byte[] bytes)
try
return new String(bytes, "UTF-8");
catch (UnsupportedEncodingException e)
throw Lombok.sneakyThrow(e);
public void run()
try
throw new Throwable();
catch (Throwable t)
throw Lombok.sneakyThrow(t);
总结
总的来说,SneakyThrows注解就是减少了代码量,让代码看起来更加的整洁。
然后在编译的时候。Lombok会帮我们把trycatch()再加上去。
参考:https://blog.csdn.net/qq_22162093/article/details/115486647
以上是关于@SneakyThrows注解的主要内容,如果未能解决你的问题,请参考以下文章
lombok的SneakyThrows究竟还原成什么代码它的用法