輕松進修C#的異常處置。本站提示廣大學習愛好者:(輕松進修C#的異常處置)文章只能為提供參考,不一定能成為您想要的結果。以下是輕松進修C#的異常處置正文
異常是法式運轉中產生的毛病,異常處置是法式設計的一部門。毛病的湧現其實不老是編寫運用法式者的緣由,有時刻運用法式會由於終端用戶的操作產生毛病。不管若何,在編寫法式前,都應當猜測運用法式和代碼中湧現的毛病。普通優越的編程標准也會防止一些不用要的法式毛病的湧現。
在項目標開辟進程中,其實不是一切的代碼履行都和想象那樣幻想,老是防止不了異常的產生。這就須要編程說話的行止理這些異常,C#說話中有三種異常處置語句:
try...catch;//處置異常
try...finally;//清晰異常
try...catch...finally;//處置一切異常
1、用try...catch語句捕捉異常
在try語句中包括輕易發生異常的代碼,接著捕捉異常,catch段裡的代碼會留意停止恰當的處置,
格局為:
try
{
}
catch(異常類 異常對象實例)
{
}
例一:用上述的語句捕捉拜訪整型數組nums時發生索引越界異常,並提醒給用戶:
<span >using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Text { class Program { static void Main(string[] args) { int[] nums = { 1, 2, 3, 4, 5, 6, 7, 8, 9 }; try//捕捉異常 { for (int i = 0; i <= nums.Length; i++)//遍歷數組一切元素 { Console.Write(nums[i] + " "); } } catch (Exception a)//拜訪異常對象 { Console.Write(a.Message);//輸入異常毛病 } Console.WriteLine(); Console.ReadLine(); } } }</span>
輸入的成果為:
因為數據元素的索引是從0開端的,for語句遍歷數組元素時,用了“小於或等於”,正很多多少遍歷一次,所以湧現索引越界。
2、消除與處置一切異常
假如用戶對發生的毛病不停止處置,而消除發生的毛病分派的資本,那末可使用try...finally語句來完成,這裡的finally塊用於消除try塊平分配的任何資本和運轉任何即便在產生異常時也必需履行的帶代碼。格局為:
try
{
}
catch(異常類 異常對象實例)
{
}
finally
{
}
這個組合是處置一切異常最好的,它歸並後面兩種毛病處置技巧,即捕捉毛病,消除並持續履行運用法式。
例二:用240去除這個數組中的各元素,因為數組中的元素值有0,所以會發生處數據為0的毛病。
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Text { class Program { static void Main(string[] args) { int[] nums = { 4,8,12,0,10 }; try//捕捉異常 { for (int i = 0; i < nums.Length; i++) { int valude = 0; valude = 240 / nums[i]; Console.WriteLine("240/{0}={1}", nums[i], valude); } } catch (Exception a)//拜訪異常對象 { Console.WriteLine(a.Message);//輸入異常毛病 } finally { Console.WriteLine("有無異常我都邑運轉"); } Console.WriteLine(); Console.ReadLine(); } } }
輸入的成果為:
3、激發異常
在編寫法式時,有時能夠要激發異常,以便捕捉異常。激發異常是經由過程throw語句和一個恰當的異常類來完成的。其格局為:
throw new 異常類(異常描寫);
異常類可所以C#說話類庫中供給的異常類,也能夠是自界說異常類。異常描寫為可選擇項,用來描寫發生異常毛病,可發生異常時捕捉到以便疾速找到發生毛病的代碼。
例三:將字符串轉換為整數的異常
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Text { class Program { static void Main(string[] args) { string str = "string"; try { int returnInt; returnInt = Program.ConvertStringToInt(str);//挪用轉換 Console.Write(returnInt); } catch (FormatException a) { Console.WriteLine(a.Message); } Console.ReadLine(); } private static int ConvertStringToInt(string str)//界說轉換函數 { int intNum = 0; try { intNum = Convert.ToInt32(str); return intNum; } catch { throw new FormatException("轉換毛病");//激發異常 } } } }
輸入的成果為:
4、自界說異常類
C#說話固然預界說了很多異常類,然則,在有些場所,創立本身的異常類能夠會便利。自界說異常類是經由過程繼續System.Exception類來創立本身的異常類。其步調是:
(1)聲明一個異常,格局以下:class 異常類名:Exception{ }
(2)激發本身的異常,格局以下: throw(ExceptionName);
例四:界說一個異常類MyException,然後激發這個異常類。
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Text { class MyException : SystemException { }//聲明異常 class Program { static void Main(string[] args) { try { Console.WriteLine("激發異常前我是被履行的");//激發異常前的提醒 throw new MyException(); Console.WriteLine("由於曾經激發異常,所以我不克不及被履行"); } catch (MyException) { Console.WriteLine("激發異常"); } Console.ReadLine(); } } }
輸入的成果為:
以上就是本文的全體內容,願望對年夜家的進修有所贊助。