C#編程(八十二)---------- 用戶自定義異常類


用戶自定義異常類

前面已經說了不少關於異常的問題了,現在來給大家說一下自定義異常時咋個回事以及咋樣.

 

為啥會出現自定義異常類呢?用用腳趾頭想想也明白,是為了定義咱們自己的異常,自定義異常類繼承自ApplicationException 

首先異常(Exception)分為兩大類,一個是預定義的異常類,后者是用戶自定義異常類時需要繼承的類.

案例:

 

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

 

namespace 自定義異常類

{

    class Program

    {

        static void Main(string[] args)

        {

            //還是上一句的案例

            Console.WriteLine("輸入一個0到5的數: ");

            try

            {

                //這句話你肯定也知道

                //不知道的話,你查看一下Parse的意思就明白了,別指望我啥都說到!

                int num = int.Parse(Console.ReadLine());

                if (num < 0 || num > 5)

                {

                    throw new MyException("你搞笑嗎? 逗我呢?");

                }

            }

            catch (MyException ex)

            {

                Console.WriteLine(ex.Message);

            }

            catch (Exception ex)

            {

                Console.WriteLine(ex.Message);

            }

            finally

            {

                Console.WriteLine("我還是那個牛X的finally ! ");            

            }

            Console.ReadKey();

        }

    }

    public class MyException : ApplicationException 

{

//public MyException (){}

        public MyException(string message) : base(message) { }//這句話知道是干的吧?別和我說你忘了!!

 

        public override string Message

        {

            get

            {

                return base.Message;

            }

        }

    }

 

}

這里面自定義了異常類MyException:ApplicationException,catch(MyException me)用戶捕獲自定義異常,catch(Exception e)用於捕獲一般異常,如果異常被第一個catch捕獲,那么第二個catch將不會執行,直接執行finally中的語句。

 

 

下面說一下自定義的異常類通常要注意的以下幾點:

1.如果你的異常類是需要寫入文件的,如日志,則需要將異常類聲明為可序列化的[Serializable]

2.要實現一個無參數的構造函數,因為可能會拋出無參數異常

3.實現一個包含message的構造函數

4.實現一個包含message以及內部異常類型的構造函數

5.添加自己的從錯誤識別數據成員

 

所以:一般情況下自定義的格式是這樣的

    class MyException : ApplicationException

    {

        //這是無參構造函數,作用試試啊自己去看上面

        public MyException()

        { }

 

        public MyException(string message)

            : base(message)

        { }

 

        public MyException(string message, Exception inner)

            : base(message, inner)

        { }

    }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM