免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
asp.net程序異常處理代碼
一、沒有異常處理代碼的程序
        //創(chuàng)建數(shù)據(jù)連接對象,連接Northwind數(shù)據(jù)庫
        SqlConnection conn = new SqlConnection();
        conn.ConnectionString = "Server=PC-2010;user id=sy2010;password=123456;Database=Northwind;";
        //創(chuàng)建命令對象
        SqlCommand cmd = new SqlCommand();
        //設(shè)置命令對象的文本,表Customer本來是Customers,故意將s去掉的,以產(chǎn)生異常
        cmd.CommandText = "Select * from Customer";
        //設(shè)置命令對象的連接對象屬性
        cmd.Connection = conn;
        //創(chuàng)建數(shù)據(jù)適配器對象
        SqlDataAdapter sda = new SqlDataAdapter();
        //設(shè)置數(shù)據(jù)適配器對象的SelectCommand屬性
        sda.SelectCommand = cmd;
        //創(chuàng)建DataSet對象
        DataSet ds = new DataSet();
        //使用數(shù)據(jù)適配器對象填充數(shù)據(jù)集對象
        sda.Fill(ds);
        GridView1.DataSource = ds.Tables[0];
        GridView1.DataBind();
        其執(zhí)行結(jié)果如下圖:
          
  
二、有異常處理代碼的程序
        //創(chuàng)建數(shù)據(jù)連接對象,連接Northwind數(shù)據(jù)庫
        SqlConnection conn = new SqlConnection();
        try
        {
            conn.ConnectionString = "Server=PC-2010;user id=sy2010;password=123456;Database=Northwind;";
            //創(chuàng)建命令對象
            SqlCommand cmd = new SqlCommand();
            //設(shè)置命令對象的文本,表Customer本來是Customers,故意將s去掉的,以產(chǎn)生異常
            cmd.CommandText = "Select * from Customer";
            //設(shè)置命令對象的連接對象屬性
            cmd.Connection = conn;
            //創(chuàng)建數(shù)據(jù)適配器對象
            SqlDataAdapter sda = new SqlDataAdapter();
            //設(shè)置數(shù)據(jù)適配器對象的SelectCommand屬性
            sda.SelectCommand = cmd;
            //創(chuàng)建DataSet對象
            DataSet ds = new DataSet();
            //使用數(shù)據(jù)適配器對象填充數(shù)據(jù)集對象
            sda.Fill(ds);
            GridView1.DataSource = ds.Tables[0];
            GridView1.DataBind();
        }
        catch (SqlException ex)
        {
            //使用異常捕獲的好處:第一、向管理員報(bào)告異常,第二、為用戶提供一個友好的提示:系統(tǒng)正在維護(hù)中
            Response.Write("SqlException" + ex.Message);
        }
        catch (Exception ex)
        {
            Response.Write("Exception" + ex.Message);
        }
        //釋放資源
        finally
        {
            if (conn != null)
                conn.Dispose();
            Response.Write("finally代碼執(zhí)行部分:完成");
        }
       其執(zhí)行結(jié)果如下圖:
       

三、獲得“Sql錯誤信息”的程序代碼
        //創(chuàng)建數(shù)據(jù)連接對象,連接Northwind數(shù)據(jù)庫
        SqlConnection conn = new SqlConnection();
        try
        {
            //user id本來為sy2010,現(xiàn)故意將其改為sy20101,以出現(xiàn)異常
            conn.ConnectionString = "Server=PC-2010;user id=sy20101;password=123456;Database=Northwind;";
            //創(chuàng)建命令對象
            SqlCommand cmd = new SqlCommand();
            //設(shè)置命令對象的文本
            cmd.CommandText = "Select * from Customers";
            //設(shè)置命令對象的連接對象屬性
            cmd.Connection = conn;
            //創(chuàng)建數(shù)據(jù)適配器對象
            SqlDataAdapter sda = new SqlDataAdapter();
            //設(shè)置數(shù)據(jù)適配器對象的SelectCommand屬性
            sda.SelectCommand = cmd;
            //創(chuàng)建DataSet對象
            DataSet ds = new DataSet();
            //使用數(shù)據(jù)適配器對象填充數(shù)據(jù)集對象
            sda.Fill(ds);
            GridView1.DataSource = ds.Tables[0];
            GridView1.DataBind();
        }
        catch (SqlException ex)
        {
            Response.Write("異常信息:" + ex.Message + "<br>");
            foreach (SqlError error in ex.Errors)
            {
                Response.Write(
                     "Source: " + error.Source + "<br>" +
                     "Number: " + error.Number.ToString() + "<br>" +
                     "State: " + error.State.ToString() + "<br>" +
                     "Class: " + error.Class.ToString() + "<br>" +
                     "Server: " + error.Server + "<br>" +
                     "Message: " + error.Message + "<br>" +
                     "Procedure: " + error.Procedure + "<br>" +
                     "LineNumber: " + error.LineNumber.ToString());

                /* 
                  error對象各屬性的含義:
                  (1)Source,獲取生成錯誤的提供程序的名稱
                  (2)Number,獲取一個標(biāo)識錯誤類型的數(shù)字
                  (3)State,狀態(tài)編號其取值范圍為1至127,狀態(tài)編號指示發(fā)現(xiàn)錯誤的源位置
                  (4)Class,獲取從SQL Server返回的錯誤的嚴(yán)重程度(級別)
                  (5)Server,獲取生成錯誤的SQL Server實(shí)例的名稱
                  (6)Message,獲取對錯誤進(jìn)行描述的文本
                  (7)Procedure,獲取生成錯誤的存儲過程或遠(yuǎn)程調(diào)用(RPC)的名稱
                  (8)LineNumber,從包含錯誤的Transact-SQL批命令或存儲過程中獲取行號
               */

            }
        }
        finally
        {
            if (conn != null)
                conn.Dispose();
            Response.Write("<br>finally代碼執(zhí)行部分:完成");
        }
        其執(zhí)行結(jié)果如下圖:
         
 

注:
一、異常概念
   1.程序中錯誤的類型
     (1)語法錯誤
     (2)邏輯錯誤
     (3)運(yùn)行時(shí)異常,比如數(shù)據(jù)庫連接不存在、被0除
   2.DOTNET異常處理機(jī)制
     程序發(fā)生異常后,將尋找異常處理代碼,如果不存在異常處理代碼,.NET Framework將處理該異常(演示異常發(fā)生狀況),.NET Framework處理異
常的方式就是將異常信息報(bào)告給用戶
二、異常處理方式
    1.try(捕捉異常/拋出異常)
    2.catch(抓住異常/處理異常)
      (1)抓異常的過程是一個匹配異常類的過程,如果匹配就執(zhí)行相應(yīng)的異常處理代碼
      (2)Exception是所有異常處理類的基類,將匹配所有的異常類
    3.finally(執(zhí)行資源清理)
      (1)不過是否發(fā)生異常都將執(zhí)行異常處理
      (2)finally不是必須的,在編程時(shí)可以根據(jù)需要進(jìn)行應(yīng)用
三、Exception類
    1.System.Exception類表示在應(yīng)用程序執(zhí)行期間發(fā)生的錯誤
    2.System.Exception 類是所有異常的基類型
      Message 屬性是 string 類型的只讀屬性,它包含對發(fā)生異常的原因的可讀描述
四、自定義異常處理類
    1.如果在程序執(zhí)行過程中所引發(fā)的異常在C#中沒有定義,這是我們可以自定義異常處理類以向用戶提示異常信息。
    2.所有用戶自定義的異常處理類都直接或者間接從Exception類派生而來
      class MyException:Exception
      {
       public MyException(string strMessage):base(strMessage)
       {
       }
      }
五、數(shù)據(jù)訪問異常處理類
    1.在ADO.NET中,每一個數(shù)據(jù)提供程序都提供三種類型的類,這三種類型的類分別為Exception, Error, 和 ErrorCollection
    2.SQL Server數(shù)據(jù)提供程序提供了SqlException, SqlError和SqlErrorCollection
六、使用SqlException類
    1.SqlException對象表示當(dāng) SQL Server 返回警告或錯誤時(shí)引發(fā)的異常
    2.SqlException類的基類為System.Exception
    3.每當(dāng) SQL Server .NET Framework 數(shù)據(jù)提供程序遇到服務(wù)器生成的錯誤時(shí),都將創(chuàng)建此類
七、使用 SqlError類和SqlErrorCollection類
    1.SqlException.Errors屬性返回SqlErrorCollection類的一個對象
    2.SqlErrorCollection對象是SqlError對象的集合
    3.每一個SqlError對象封裝了由SQL Server服務(wù)器引發(fā)的錯誤或者警告
八、識別SQL Server 2000 錯誤
    1.如果向SQL Server發(fā)送一個錯誤的SQL命令,SQL Server將返回一個格式化的錯誤消息
      Server: Msg 208, Level 16, State 1, Line 1
      Invalid object name 'SomeTable'
    2.消息格式
      Server: Msg 208, Level 16, State 1, Line 1
      Invalid object name 'SomeTable'
      (1)第一部分為錯誤消息編號,在SQL Server中每一個錯誤消息都有一個相應(yīng)的編號與之對應(yīng)。消息編號唯一標(biāo)識每一個錯誤消息。
      (2)消息的第二部分為錯誤的安全級別,其值在0到25之間,錯誤安全級別代表錯誤的種類
      (3)錯誤消息的第三部分為狀態(tài)編號,其取值范圍為1至127,狀態(tài)編號指示發(fā)現(xiàn)錯誤的源位置
      (4)錯誤消息的最后一部分為錯誤的描述,SQL Server的錯誤消息都存儲在系統(tǒng)表sysmessages中,可以通過查詢語句“select * from
sysmessages”查詢出這些錯誤消息 
    3.錯誤安全級別
      范圍              說明
      0–10    表示該消息并不是錯誤消息,而僅僅是提供一些有用的信息
      11–16       11-16類別的錯誤是由用戶導(dǎo)致的。例如安全級別16表示用戶執(zhí)行了一個錯誤的更新操作
      17    SQL Server已經(jīng)使用了不可配置的資源,例如鎖
      18    代表非重大的內(nèi)部軟件錯誤
      19    已經(jīng)超過了不可配置的資源限制
      20    當(dāng)前進(jìn)程殘生的錯誤
      21    影響SQL Server所有進(jìn)程的錯誤
      22    表或者索引被破外
      23    表示一個非法的數(shù)據(jù)庫
      24    表示硬件錯誤
      25    代表系統(tǒng)錯誤
九、SQL SERVER錯誤日志
    1.SQL Server維護(hù)一個錯誤日志(文本格式)用于存儲服務(wù)器信息和錯誤消息
    2.錯誤日志文件可以幫助我們記錄下來各種出現(xiàn)的問題和潛在的問題
    3.SQL Server日志文件存儲在SQL Server根目錄下的LOG文件夾下,在這個文件夾下有不止一個日志文件,并且第一個文件為ERRORLOG
    4.可以使用記事本打開日志文件
 
 
 
 
本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
Visual C#中動態(tài)操作SQL Server數(shù)據(jù)庫
使用參數(shù)化查詢防止SQL注入漏洞
c#+sql
finally類
分享Java處理異常的幾個小知識
sqlHelper_DataBase
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服