之前,在使用異常捕獲語句try...catch...throw語句時,一直沒太留意幾種用法的區別,前幾天除錯程式時無意中了解到幾種使用方法是有區別的,網上一查,還真是,主要是區別在堆疊資訊的起始點不同。總結如下:
我們都知道,c#中使用throw和throw ex丟擲異常,但二者是有區別的。
在c#中推薦使用throw;來丟擲異常;throw ex;會將到現在為止的所有資訊清空,認為你catch到的異常已經被處理了,只不過處理過程中又拋出新的異常,從而找不到真正的錯誤源。
throw的用法主要有以下幾種:
trycatch
(exception ex)
第二種,可追溯到原始異常點,不過編譯器會警告,定義的ex未有使用:
trycatch
(exception ex)
第三種,不帶異常引數的,這個同第二種其實一樣,可捕獲所有型別的異常,ide不會告警:
trycatch
其實第二種和第三種用法,書上也是不建議使用的,一般要從小粒度的異常捕獲開始,採用多個catch語句,大家就見仁見智吧。。。
trycatch
(exception ex)
Throw與Throw ex區別,記錄日誌的方法
throw 會保留堆疊,throw ex會清空堆疊,從而找不到在什麼地方出錯。記錄日誌時,使用ex.tostring 得到出錯資訊,如果有 pdb檔案則會顯示詳細的堆疊資訊,包括行號等 如果沒有 pdb檔案,則會顯示出錯資訊和呼叫的相關方法,但是不會顯示出錯行號資訊。可以用以下 測試 class p...
Java異常處理的throw和throws的區別
1.區別 throws是用來宣告乙個方法可能丟擲的所有異常資訊,throws是將異常宣告但是不處理,而是將異常往上傳,誰呼叫我就交給誰處理。而throw則是指丟擲的乙個具體的異常型別。2.分別介紹 throws 用於宣告異常,例如,如果乙個方法裡面不想有任何的異常處理,則在沒有任何 進行異常處理的時...
java基礎 throw與throws的區別
b throw與throws的區別 b 通過乙個例子來詳細講解 public test throws repletexception catch exception e 從上面的例子可以看出 1 throws是用來宣告乙個方法可能丟擲的所有異常資訊 狀態 throw則是指丟擲的乙個具體的異常型別 動...