中文字幕精品亚洲无线码二区,国产黄a三级三级三级看三级,亚洲七七久久桃花影院,丰满少妇被猛烈进入,国产小视频在线观看网站

lombok~@SneakyThrows注解讓代碼更優(you)雅

我們知道,java里的異常分為Exception和RuntimeException兩大類,RuntimeException異常會由運行時幫我們進行捕獲,統一進行處理;而Exception異常是受檢異常(Checked Exception),需要我們自己在代碼里顯示的聲明和處理。
RuntimeException異常的(de)代(dai)表

  • llegalArgumentException
  • IllegalAnnotationException
  • EncodingException

Exception的代表(biao)

  • IOException
  • IllegalBlockSizeException
  • GeneralSecurityException
  • IllegalAccessException

問題表現

在一個類中,定義兩個方法a和b,b方法會聲明throws IOException,a方法里面在調用b方法里,也需要對這個IOException進行處理,這時IDE會提升我們,需要顯示的實現這個異常的捕獲。
1
如下面和圖所示,你有三種選擇,添加throws,添加lombok @SneakyThrows注解,以及添加try...catch等
2
第一(yi)種,代碼變(bian)成這樣

   public void a() throws IOException {
            b();
        }

第(di)二(er)種,代碼(ma)變(bian)成這樣

        @SneakyThrows
        public void a() {
            b();
        }

第三種,代碼就是傳統的try...catch了

public void a() {
        try {
          b();
      } catch (IOException e) {
          e.printStackTrace();
      }
  }

從(cong)上面三(san)段代碼來說,無疑(yi)lombok封裝的(de)@SneakyThrows代碼最(zui)為簡潔,添加它之(zhi)后,IDE的(de)警告就沒有了(le),它實(shi)際是把Exception偽裝成了(le)RuntimeException,把JVM給(gei)欺騙了(le)。

下(xia)面(mian)代(dai)碼選自sneakyThrow的(de)實(shi)現,它將我們的(de)異常強轉成了(le)RuntimeException異常,編(bian)譯器一看(kan)它不是(shi)Exception異常,所(suo)以(yi)警告(gao)信(xin)息(xi)也就沒了(le)。

   public static RuntimeException sneakyThrow(Throwable t) {
        if (t == null) throw new NullPointerException("t");
        return Lombok.<RuntimeException>sneakyThrow0(t);
    }

    private static <T extends Throwable> T sneakyThrow0(Throwable t) throws T {
        throw (T)t;
    }
posted @ 2020-09-08 13:11  張占嶺  閱讀(3350)  評論(1)    收藏  舉報