自定義異常和拋出異常

最近在研究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()
                {
                         if(conn.State.ToString()== "Closed")
                        {
                                 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來判斷是否關閉,這個比我那個方便。
 
大功告成,嘿嘿。
相關文章
相關標籤/搜索