C 異常處理 try catch語句

2021-09-30 19:12:01 字數 2528 閱讀 9172

以下**是個人用來學習記錄,功能是看懂try、catch語句可以看懂在搜尋呼叫棧來尋找乙個異常處理程式的順序。

/*  

* 功能:看懂搜尋try\catch語句搜尋呼叫棧尋找乙個異常處理程式的順序

*/using system;

/// /// 包含兩個方法的型別,其中b型別是異常的

///

class myclass

catch (nullreferenceexception)

finally

}public void b()

catch (indexoutofrangeexception)

finally

}}/// /// 主程式

///

class program

catch (dividebyzeroexception)

finally

console.writeline("after try statement in main()");

console.writeline(" --------------- keep running");

console.readkey();

}}/* 程式執行結果

-----------------------------------------

finally clause in b()

finally clause in a()

catch clause in main()

finally clause in main()

after try statement in main()

--------------- keep running

-----------------------------------------

*/

可以使用throw語句顯式地引發乙個異常,下面的**定義了乙個名稱為printarg()的方法,它帶乙個string引數並列印出來。在try塊的內部,首先做檢查以確定該引數不是null。如果是null,它建立乙個argumentnullexception例項並丟擲它。該異常在catch語句中捕獲,並且該出錯訊息被列印。main呼叫該方法兩次:一次用null引數,一次用乙個有效引數。

/*  

* 功能:丟擲異常

*/using system;

/// /// 丟擲異常

///

class myclass

console.writeline(arg);

}catch(argumentnullexception e)

",e.message);}}

}/// /// 主程式

///

class program

}/* 程式執行結果

--------------------------------------------

message: value cannot be null.

parameter name: arg

hello!

--------------------------------------------

*/

為什麼這裡需要寫程式時主動讓它引數為null就丟擲異常?

因為類似於這樣的例子,引數為null程式執行時候系統並不認為這是乙個異常,但是會對結果產生很大的影響。而我們寫程式的時候控制讓它引數為空就丟擲異常,這樣可以盡最大可能保證程式執行時候的穩定性,歸根結底還是讓程式不能自動識別異常的時候手動丟擲。

throw語句還可以不帶異常物件使用,在catch語句塊內部。

1、這種形式重新丟擲當前異常,系統繼續它的搜尋,為該異常尋找另外的處理**;

2、這種形式只能用在catch語句內部

/*  

* 功能:不帶異常物件的丟擲

*/using system;

/// /// 丟擲異常

///

class myclass

console.writeline(arg);

}catch (argumentnullexception e)

",e.message);

throw; //重新丟擲異常,沒有附帶引數}}

catch

}}/// /// 主程式

///

class program

}/* 程式執行結果

--------------------------------------------

inner catch: value cannot be null.

parameter name: arg

other catch: handing an exception.

--------------------------------------------

*/

c 異常處理 try catch

初學 try catch 語法 try try和catch之間不能有其他的 catch 技巧 console.writeline 你的語文成績?int chainese 0 宣告變數再初始化賦值為0,因為在try中宣告作用域只能在try中的大括號中有效.bool chaineseexecption ...

try catch異常處理

目的 防止編譯期異常 支援的格式 trycatch 異常型別 變數名 finally 變形1 trycatch 異常型別 變數名 變形2 分別處理不同的異常型別。trycatch 異常型別 變數名 catch 異常型別2 變數名 catch 異常型別3 變數名 catch 異常型別4 變數名 變形3...

異常處理try catch

今天來解決異常 1.錯誤 錯誤指的是我們寫的源 不符合c 的語法規範.對於這種錯誤我們的visual studio絕大多數情況下 會以紅色的波浪線提示.後果 就是源 無法編譯為 程式集 不能執行.如何解決?那就將源 改為符合c 的語法規範就可以了.有一些錯誤,vs不會提示的那麼及時.甚至是不會提示的...