throw和throw ex的區別

2021-06-09 18:57:51 字數 681 閱讀 4444

之前,在使用異常捕獲語句try...catch...throw語句時,一直沒太留意幾種用法的區別,前幾天除錯程式時無意中了解到幾種使用方法是有區別的,網上一查,還真是,主要是區別在堆疊資訊的起始點不同。總結如下:

我們都知道,c#中使用throw和throw ex丟擲異常,但二者是有區別的。

在c#中推薦使用throw;來丟擲異常;throw ex;會將到現在為止的所有資訊清空,認為你catch到的異常已經被處理了,只不過處理過程中又拋出新的異常,從而找不到真正的錯誤源。

throw的用法主要有以下幾種:

try

catch

(exception ex)

第二種,可追溯到原始異常點,不過編譯器會警告,定義的ex未有使用:

try

catch

(exception ex)

第三種,不帶異常引數的,這個同第二種其實一樣,可捕獲所有型別的異常,ide不會告警:

try

catch

其實第二種和第三種用法,書上也是不建議使用的,一般要從小粒度的異常捕獲開始,採用多個catch語句,大家就見仁見智吧。。。

try

catch

(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則是指丟擲的乙個具體的異常型別 動...