轉到Java之後發現一個很妖的事情,爲啥有些方法後邊有個 throws XXXXExceptionide
好比下面的代碼url
@Override public <T> ResponseEntity<T> exchange(String url, HttpMethod method, HttpEntity<?> requestEntity, Class<T> responseType, Object... uriVariables) throws RestClientException { RequestCallback requestCallback = httpEntityCallback(requestEntity, responseType); ResponseExtractor<ResponseEntity<T>> responseExtractor = responseEntityExtractor(responseType); return execute(url, method, requestCallback, responseExtractor, uriVariables); }
這個是.NET沒有的一個語法,受查異常spa
這是摘自《Java核心技術》的解釋,我感受很明確了code
Java語言規範將派生於Error類和RuntimeException類的全部異常稱爲非受查(unchecked)異常【上圖中的綠色部分】,全部其餘的異常稱爲受查(checked)異常【上圖中的藍色部分】。blog
編譯器將覈查是否爲全部受查異常提供了異常處理器。編譯器
受查異常要麼方法內部處理,要麼經過方法的聲明,提示調用方處理(好比文件找不到等狀況)it
非受查異常要麼不可控制(好比OOM),要麼避免發生,其實理論上也是徹底能夠避免發生的(好比空引用的狀況)io