有没有办法注释一个方法,以便所有抛出的异常都自动转换为运行时异常?@MagicAnnotation//nothrowsclause!voidfoo(){thrownewException("bar")'} 最佳答案 Lombok项目@SneakyThrows可能是你要找的。并没有真正包装你的异常(因为在很多情况下它可能是一个问题),它只是在编译期间不会抛出错误。@SneakyThrowsvoidfoo(){thrownewException("bar")'} 关于java-用注释包装运行
今天突然发现一个新大陆:Lombok之@SneakyThrows@SneakyThrows注解的用途得从java的异常设计体系说起这是异常的类图。Throwable是Error和Exception的父类,用来定义所有可以作为异常被抛出来的类。UML图如下:说明1.Error和Exception区分:Error是编译时错误和系统错误,系统错误在除特殊情况下,都不需要你来关心,基本不会出现。而编译时错误,如果你使用了编译器,那么编译器会提示。Exception则是可以被抛出的基本类型,我们需要主要关心的也是这个类。Exception又分为RunTimeException和其他Exception。2
java中常见的异常有两种:Exception即非运行时异常(编译异常)、RuntimeException即运行时异常。对于Exception即非运行时异常(编译异常),必须要开发者解决以后才能编译通过,解决的方法有两种, 1、throw到上层, 2、try-catch处理。对于RuntimeException即运行时异常,在代码中可能会有RunTimeException,但是Java编译检查时是不会告诉你有这个异常的,它会在实际运行代码时则会暴露出来,比如经典的1/0,空指针等。@SneakyThrows注解是由lombok中封装的注解,它就是为了消除上面那种抛出