C#異常處理機理-程式碼分析
阿新 • • 發佈:2019-02-18
//程式碼核心:
//1.通過屬性Age訪問私有欄位_age
//2.設計異常處理(溢位,非數字字串,年齡範圍異常,其它異常)
//3.自己定義一個異常類,繼承FormatException異常類
using System;
public class OutString
{
private int _age; //1.定義一個私有欄位,限制類外面訪問
public int Age //2.定義一個公有屬性,對私有欄位進行訪問並提供靈活控制
{
get //3.取值訪問器
{
return this._age;
}
set //4.賦值訪問器
if(value<=0 || value>=150) //5.使用屬性提供的賦值訪問器進行控制,set{}就是個方法
{
//6.丟擲異常例項
throw new AgeRangeException("年齡應該在0-150歲之間,請核對輸入資料!");
}
else
{
this._age=value;
}
}
}
public class AgeRangeException:System.FormatException //7.定義一個異常類,繼承系統
{
public AgeRangeException():base()
{}
public AgeRangeException(string exmessage):base(exmessage)
{}
}
}
public class Demo //7.使用上面的class OutString,類做好了就是給別人用的哦
{
public static void Main(string[] args) //8.程式的入口,靜態Main();
{
string CP;
while(true) //9.死迴圈 除非自己能合理控制否則小心使用它
try //10.try語句塊,也是雷區
{
int tempage;
OutString OS=new OutString();
Console.Write("請輸入你的年齡:");
tempage=Convert.ToInt32(Console.ReadLine());
OS.Age=tempage;
Console.WriteLine("年齡為:"+OS.Age);
}
//11.異常類層次關係Object--SystemException--SystemFormatException...
catch(FormatException FE) //根據系統FormatException異常類捕捉異常情況
{
Console.WriteLine(FE.Message);
}
catch(OverflowException OFE) //根據系統OverflowException異常類捕捉異常情況
{
Console.WriteLine(OFE.Message);
}
catch(Exception E) //根據系統Exception異常類捕捉異常情況
{
Console.WriteLine(E.Message);
Console.WriteLine("發生異常了,請與管理員聯絡處理!!!");
}
finally //12.finally語句塊總有執行的
{
Console.Write("按Y鍵退出,否則重新輸入");
}
CP=Console.ReadLine().ToLower(); //.最後一點,控制死迴圈語句
if(CP=="y")
{
break;
}
}
}
}
Try...Catch...Finally 語句專門用於結構化異常處理。
異常處理程式的try{}塊包含希望錯誤處理程式監視的程式碼節。如果該程式碼節中的任何程式碼在執行期間發生錯誤,C#將檢查Try...Catch...Finally內的每個Catch語句,直到找到條件與該錯誤匹配的語句。
如果找到了這樣的語句,則控制轉移到catch塊內的第一個程式碼行。
如果沒有找到匹配的Catch語句,則繼續搜尋包含發生異常的塊的外部Try...Catch...Finally塊的Catch語句。此過程在整個堆疊中繼續,直到在當前過程中找到匹配的 catch塊。
如果沒有找到,將產生錯誤。
Finally節中的程式碼總是最後執行,並且剛好在錯誤處理塊失去範圍之前執行,不論Catch塊內的程式碼是否已執行。將清理程式碼(如用於關閉檔案和釋放物件的程式碼)放在Finally節中。
(以上理解如有誤,懇請指教!並將立即更新)