天天看點

自定義異常和抛出異常

最近在研究winform,因為這玩意不好用文字描寫,是以就沒寫部落格了。不過今天遇到需要大書特書的東西,趕緊記下來免得忘記了。

話說昨天我看了ado.net第一部分的視訊,主要講了SqlConnection,SqlCommand,SqlDataReader。是以我今天就寫了個小程式來測試。期間牽扯到寫入資料庫,根據SQL語句顯示資料等等,其中都要先判斷一個東西sql資料庫的連接配接狀态,當狀态為Open時候才能進行讀取和寫入資料,當狀态為Closed時候提示錯誤要求先打開資料庫。

開始我老老實實的在每個操作前寫if(conn.State.ToString()=="Closed"){},後來一想,為啥不寫一個方法來判斷目前連接配接狀态,如果是關閉就中斷操作提示錯誤?每個操作前調用一下就OK了,省時省力。

想法簡單,實作起來有難度,開始寫的是

                private void connzt()

                {

                        if(conn.State.ToString()=="Closed")

                        {

                                break;

                        }

                }

運作報錯,提示沒有課中斷的循環。想了下break确實隻能中斷循環。

然後問了問别人,知道需要先定義異常,然後用throw抛出異常,之後在外部try中捕獲這個異常就可以了。嗯嗯,開幹。

首先定義異常類,從系統異常類中繼承方法再重寫

        public class adoconexp : Exception

                        private string mymessage;

                        public adoconexp(string message)

                                : base()

                                mymessage = message;

                //重寫Message方法

                        public override string Message

                                get

                                {

                                        return mymessage;

                                }

然後定義判斷連接配接的方法調用自己定義的異常類并抛出

             private void connzt()

                                throw new adoconexp("資料庫還在未連接配接!!!!");                                

最後在别的方法中調用它

                private void button5_Click(object sender, EventArgs e)

                        try

                                connzt();//用判斷方法先判斷一次

                                MessageBox.Show("資料庫是打開的");

                        catch(adoconexp x)//使用自己定義的異常

                                MessageBox.Show(x.Message);

有朋友提示,可以用conn.State==ConnectionState.Closed來判斷是否關閉,這個比我那個友善。

大功告成,嘿嘿。