【C#之Try……Catch例項】

我是太陽啦啦啦發表於2016-02-21

前言:

這個階段我在學習設計模式,今天準備實戰了,遇到了try……catch,在學C#的時候還記憶深刻呢?現在不懂得期中的道理了,溫故知新,知識需要反覆!今天,從例項中在溫故一下Try……Catch,而順道說說try……catch……finally 。

中心:

在C#中Try……Catch異常處理中,如果沒有TRY,程式直接就會崩潰,如果沒有Catch,異常總是向上層丟擲或中斷程式。catch可以有多個,也可以沒有,每個catch可以處理一個特定的異常。


(一)構造

<span style="font-size:18px;"><span style="font-size:18px;"><span style="font-size:18px;"><span style="white-space:pre">	</span>try
            {
                //有可能發生錯誤的程式塊
            }
            catch (Exception)
            {
                //當發生錯誤的時候才會執行的程式碼塊
                throw;
            } </span></span></span>

(二)例項中運用

<span style="font-size:18px;"><span style="font-size:18px;"><span style="font-size:18px;">using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace count
{
    class Program
    {
        static void Main(string[] args)
        
        {
            try
            {
                Console.Write("請輸入數字A:"); //顯示請輸入數字A:
                string strNumberA = Console.ReadLine(); //獲取使用者輸入的資訊
                Console.Write("請輸入運算子(+、-、*、/):");//顯示輸入運算子
                string strOperate = Console.ReadLine();//獲取使用者輸入的預算符
                Console.Write("請輸入數字B:");//請輸入數字B:
                string strNumberB = Console.ReadLine();//請輸入數字B:
                string strResult = "";//運算結果
                switch (strOperate )
                {
                    case "+": //分支語句“+”運算
                        strResult = Convert.ToString(Convert.ToDouble
                            (strNumberA) + Convert.ToDouble(strNumberB));

                        break; //結束當前程式
                    case "-"://分支語句“-”運算
                         strResult = Convert.ToString(Convert.ToDouble
                            (strNumberA) - Convert.ToDouble(strNumberB));
                         break; //結束當前程式
                    case "*"://分支語句“*”運算
                        strResult = Convert.ToString(Convert.ToDouble
                           (strNumberA) * Convert.ToDouble(strNumberB));

                        break; //結束當前程式
                    case "/"://分支語句“/”運算
                        if (strNumberB != "0")//如果數字B不等於0
                         strResult = Convert.ToString(Convert.ToDouble //執行運算
                            (strNumberA) / Convert.ToDouble(strNumberB));
                        else  //否則
                            strResult = "除數不能為0";//結果為“除數不能為0”
                        break; //結束當前程式

                }
                Console.WriteLine("結果是" + strResult);//顯示結果
                Console.ReadLine();

            }
            catch (Exception ex)//處理錯誤資訊
            {

                Console.WriteLine("您的輸入有錯:" + ex.Message);//顯示錯誤資訊
            }
          
       }
    }
}</span></span></span>
(三)執行結果
1.正常:                                                                       2.除數為0
    3.輸入錯誤


(四)Try……Catch……finally(實際上finally可加可不加)

<span style="font-size:18px;"><span style="font-size:18px;"> try
            {
                 //有可能發生錯誤的程式塊
            }
            catch (Exception)
            {
                //當發生錯誤的時候才會執行的程式碼塊
                throw;
            }
            finally
            { 
                //無論是否發生錯誤都會執行的程式碼塊
            }</span></span>

(五)在上面的例項中加入finally程式碼

<span style="font-size:18px;"><span style="font-size:18px;"> finally
           {
          Console.WriteLine("謝謝您的使用!歡迎下次光臨!");
           }</span></span>
執行效果:


(六)補充

可加入下面程式碼,進行限度提示
<span style="font-size:18px;"><span style="font-size:18px;"><pre name="code" class="csharp">catch (IndexOutOfRangeException ex)
            {
                Console.WriteLine("Indexoutof異常:" + "不出現異常的限制" + ex.Message);
            }</span></span>



總結:

  • 不要過多使用 catch。通常應允許異常在呼叫堆疊中往上傳播。
  • 使用 try-finally 並避免將 try-catch 用於清理程式碼。在書寫規範的異常程式碼中,try-finally 遠比 try-catch 更為常用。
關於異常就介紹到這裡,如果有問題,歡迎大家指正!

相關文章