Unchecked开源工具让你永远告别Java异常检查

Unchecked将 Java 的检查出异常”破解为“未检查出任何异常Exception”。

当你遭遇Exception异常时,你需要使用try{}捕获处理这个异常,或者将这个异常依然抛出,只有这两种选择。

这两种选择都不好,首先使用try{}捕获异常,那么就需要涉及一些业务逻辑的处理,你可能需要检查一下你调用代码的API,或源代码,研究它为什么抛出异常,这让你偏离你自己正在展开的业务逻辑处理。

照常抛出异常,好像是一种不负责任,使得你得代码造成隐患。

当然,抛出异常最影响的是函数式编程,如下:

List.of("LICENSE", "README.md", "Unchecked.java").stream()
    .map(file -> {
        **try** {
            **return**(file + ": " + Files.lines(Paths.get(file)).count());
        } **catch** (IOException e) {
            **throw** **new** RuntimeException(e); _// java made me do it_ }
    })
    .toList(); 

在stream这个流的函数式操作中,你需要使用try来捕获异常,是不是很滑稽?

使用了这个Unchecked Java以后,你的代码就变成真正流式函数式代码:


List.of("LICENSE", "README.md", "Unchecked.java").stream()
    .map(file -> file + ": " + Files.lines(Paths.get(file)).count())
    .toList(); 

当您无法处理已检查的异常时,通常的做法是将其作为RuntimeException重新抛出。

这种做法除了代码污染外,这样做的问题是异常的根本原因被隐藏起来,有时如果开发人员忘记保留它,异常就会丢失。

使用这个Unchecked Java开源项目,封装已检查异常不再是必要的。异常将被传回调用栈。

Unchecked Java开源项目不会对字节码进行任何修改。这是因为JVM不知道已检查异常。

一直以来都是编译器在捣鬼。

使用依赖:


  io.github.rogerkeays
  unchecked
  0.4.2
  compile

配置编译插件:



  
    
      org.apache.maven.plugins
      maven-compiler-plugin
      3.11.0
      
        
          -Xplugin:unchecked
          -J--add-opens=java.base/java.lang=ALL-UNNAMED
        
        **true**
        ...
      
    

注意,旧版本的编译器插件使用不同的语法。详情请参考Maven编译器插件文档。确保添加 true 选项。

要添加nowarn参数,使用 -Xplugin:unchecked nowarn 。

目前支持:

  • jdk-09.0.4
  • jdk-10.0.2
  • jdk-11.0.8
  • jdk-12.0.2
  • jdk-13.0.2
  • jdk-14.0.2
  • jdk-15.0.2
  • jdk-16.0.2
  • jdk-17.0.2
  • jdk-18.0.2.1
  • jdk-19.0.2
  • jdk-20.0.1
  • jdk-21 (early access)
  • jdk-22 (early access)

为确保与现有代码的向后兼容性,Unchecked被用于编译和测试以下开源项目:

  • Apache Commons Lang
  • iText
  • Tomcat
  • Hibernate

开源项目: https://github.com/rogerkeays/unchecked

更多函数式编程:https://www.jdon.com/tag-10341/

你可能感兴趣的:(javascript,reactjs)