try catch裡面try catch巢狀

2022-03-25 20:56:32 字數 1410 閱讀 2993

try catch裡能否內嵌try catch?答案是肯定的。但是等內層try catch出異常之後是個什麼執行順序呢?看下面**

static

void main(string

args)

catch

(exception ex)

finally

console.readkey();

}private

static

void

errormethod()

catch

(exception ex)

finally

}

內層catch處理了異常,所以沒有執行外層catch。

咱們把內層的catch注釋掉  再試下

static

void main(string

args)

catch

(exception ex)

finally

console.readkey();

}private

static

void

errormethod()

//catch (exception ex)

//finally

}

很明顯,外層catch捕獲了異常。

總結:try catch巢狀,內層不能捕獲時,會考慮外層內否捕獲,內層能捕獲,則外層catch不執行。

try

catch

finally

//e

}

catch

finally

上面的** 執行順序

丟擲異常在:內層a,e處由外層catch塊捕獲,並執行外層finally  

丟擲異常在:內層b處,且有一合適內層catch捕獲,執行內層finally,後執行e處  

丟擲異常在:內層b處,但內層catch塊沒有合適處理程式,執行內層finally,搜尋外層catch,找合適的,執行外層finally,此時不會執行e  

丟擲異常在:內層c處,退出內層catch塊,執行內層finally,搜尋外層catch,找到合適,執行外層finally  

丟擲異常在:內層d處,退出內層finally塊,搜尋外層catch,找到合適,執行外層finally  

a拋異常 a=》f=》g

b拋異常 c能捕獲 b=》c=》d=》e=》f=》g (若c處無法捕獲b=》f=》g)

c拋異常 c=》d=》f=》g

d拋異常 d=》f=》g

e拋異常 a=》f=》g 同a

另外 try{}catch{} 中未做捕獲型別限定,可捕獲所以異常。如 try{}catch(ioexception ex){} 則catch只能捕獲i/o操作引發的異常。

trycatch放在for迴圈的裡面還是外面好

try放在for迴圈裡面和外面的區別是什麼呢?先看看下面的 的區別 public class test catch exception e public void test2 catch exception e public static void main string args throws e...

提前終止forEach技巧,使用try catch

學習react優化效能的時候,在render之前,生命週期shouldcomponentupdate裡判斷前後兩次資料是否一致,使用了foreach巢狀if語句,如果滿足條件想直接break跳出foreach迴圈,但事實並沒有想的那麼簡單,直接丟擲異常。查閱資料原來 接著想了個乙個可以實現的辦法,具...

TRY CATCH 通用格式

use dorbengobegin try generate a divide by zero error.select 1 0 end trybegin catchselecterror number as errornumber,error severity as errorseverity,e...