97超碰碰碰_91热播_91国产免费视频_91视频合集_国产精品白丝jk白祙_国产精品久免费的黄网站

您現在所在的位置:首頁 >學習資源 > Unity游戲/VR/AR入門教材 > VR開發入門教程36:控制臺編程--異常之自定義異常

VR開發入門教程36:控制臺編程--異常之自定義異常

來源:奇酷教育 發表于:

一定會執行的程序塊---finally異常處理的統一出口try { 常規的代碼;}catch(){ 處理異常 }finally { 不論發生什么異常(或者不發生任

一定會執行的程序塊---finally

異常處理的統一出口
try {
 //常規的代碼;
}
catch()
{ //處理異常 }
finally {
 //不論發生什么異常(或者不發生任何異常),都要執行的部分;
}
finally:
     1.捕獲例外的最后一步是通過finally語句為例外處理提供一個統一的出口,使得在控制流程轉到程序的其他部分以前,能夠對程序的狀態作統一的管理。
     2.無論try所指定的程序塊中是否拋出例外,也無論catch語句的例外類型是否與所拋棄的例外的類型一致,finally所指定的代碼都要被執行,它提供了統一的出口。(finally語句與switch中的default語句是不同的!)
     3.通常在finally語句中可以進行資源的清除工作,如關閉打開的文件、刪除臨時文件等。
 
finally和return的關系:
1.當try和catch中有return時,finally仍然會執行;
2.finally是在return后面的表達式運算后執行的(此時并沒有返回運算后的值,而是先把要返回的值保存起來,不管finally中的代碼如何修改,返回的值都不會改變,仍然是之前保存的值),所以函數返回值是在finally執行前確定的;
3.finally中不可以有return,否則語法錯誤
throw ExceptionObj;
拋出異常
首先拋出異常不是出錯產生,而是人為地拋出
 
1.任何從Exception派生的類都可以用throw語句拋出,拋出例外用來表明程序遇到的錯誤無法正常執行而需要例外處理
throw new MyException(“some infomation”);
2.例外拋出點后的代碼在拋出例外后不再執行
也可以說例外的拋出終止了代碼段的執行

自定義異常

不是由系統監測到的異常(下標越界,被0-除等),而是由用戶自己定義的異常.
用戶定義的異常同樣要用try--catch捕獲,但必須由用戶自己拋出 throw new MyException.
異常是一個類,用戶定義的異常必須繼承自SystemException或ApplicationException類,建議ApplicationException類.
 
形如:
class MyException : ApplicationException
{….}
 
例:
計算兩個數之和,當任意一個數超出范圍時,拋出自己的異常
public class NumberRangeException : ApplicationException
{  public NumberRangeException(String msg):base(msg)
   { }
}
 
public int CalcAnswer(String str1, String str2)
{
    int int1, int2;
    int answer = -1;
    try
    {
         int1 = int.Parse(str1);
         int2 = int.Parse(str2);
         if( (int1 < 10) || (int1 > 20)|| (int2 < 10) || (int2 > 20)))
         {
               NumberRangeException e = new NumberRangeException
                   ("Numbers not within the specified range.");
               throw e;
         }
         answer = int1 + int2;
    }catch (FormatException e){
      Console.WriteLine(e);
    }
    return answer;
}
public void GetAnswer()
{
   String answerStr;
   try
   {
        int answer = CalcAnswer(“12”, “5”);
   }catch (NumberRangeException e){
        answerStr = e.Message;
   }
   Console.WriteLine(answerStr);
}

總結

1.一般格式:正常程序和出錯處理分離開來
try { C# statement;
}catch(ExceptionType1 ExceptionObject) {
   Exception1  handling;
} catch(ExceptionType2 ExceptionObject) {
   Exception2  handling;
}….
}finally {
   final handling;
 //  (統一的出口,最終必定要執行)
}}
2.把異常傳播給堆棧,沿著被調用的順序往前尋找,只要找到符合該異常種類徹底異常處理程序,就交給這部分程序去處理
3.異常可以人為地拋出,用throw new 語句
5.異常可以是系統已經定義好的,也可以是用戶自己定義的
5.用戶自己定義的異常一定繼承自Exception類 一般繼承自ApplicationException
主站蜘蛛池模板: 国产破外女出血视频 | 国产尤物福利视频在线观看 | 色播视频在线 | 粗了大了 整进去好爽视频 粗一硬一长一进一爽一a级 | 久久亚洲私人国产精品 | 狠狠色噜噜狠狠狠狠97首创麻豆 | 亚洲成熟女人毛毛耸耸多 | 亚洲老妇色熟女老太 | 亚洲性网| www.就去干.com| 亚洲精品综合一区二区三区 | 深夜福利在线看 | 四虎影视在线影院在线观看 | 日本人视频18jizz免费 | 综合成人在线 | 在线观看网站国产 | 国产亚洲午夜高清国产拍精品 | 国产精品无码久久av | 亚洲欧美一区二区三区国产精品 | 欧洲吸奶大片在线看 | 国产日产欧美精品 | 欧美综合区自拍亚洲综合 | 久热精品在线观看 | 欧美亚洲国产一区二区三区 | 小明精品国产一区二区三区 | 欧美v国产v亚洲v日韩九九 | 成人免费男女视频网站慢动作 | 成人a视频高清在线观看 | 欧美日本俄罗斯一级毛片 | 欧美黑人与白人香艳免费视频 | 成人在线观看视频免费 | 欧美激情综合 | 亚洲国产精品一区二区首页 | 色一情一乱一伦一视频免费看 | 国产又色又爽又黄刺激视频 | 毛片免费电影 | 麻豆入口视频在线观看 | 亚洲va中文字幕不卡无码 | 亚洲精品久久玖玖玖玖 | 色一情一乱一伦一区二区三欧美 | 日韩精品中文字幕一区二区三区 |