@sneakythrows从Java的异常设计系统中发表了评论。
1.普通异常类,这是我们经常说的或检查异常。
2. RuntimeException类,在运行时异常。
前者将迫使将其扔掉以声明投掷,而呼叫者必须显示此例外。设计的目的是提醒开发人员应对在某些情况下可能存在的异常情况。。
但是现实通常与愿望背道而驰。在大多数情况下,我们一直扔掉。例外是Runtime Exception的面包层,然后将其扔掉。这种解决方案在春季到处都出现。
Lombok的@sneakythrows是消除此类模板代码。使用注释后,您不必担心异常的处理
真正生成的代码
显然,魔术被隐藏在Lombok.sneakythrow(t)中;也许每个人都认为这种方法是新的RuntimeException()等。
读取代码可以看到整个方法实际上是核心逻辑是抛出(t)t;并使用仿制药迫使可传输到RuntimeException。
尽管我们不是Runtime Exception。但这并不重要。由于JVM不在乎此。当始终存储到字节代码中时,没有任何通用信息。这只是欺骗Javac编译器。源代码中的注释。解释了。
作者:Zhangsan_plus