乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      asp.net程序異常處理代碼

       寒木蕭條 2010-10-07
      一、沒(méi)有異常處理代碼的程序
              //創(chuàng)建數(shù)據(jù)連接對(duì)象,連接Northwind數(shù)據(jù)庫(kù)
              SqlConnection conn = new SqlConnection();
              conn.ConnectionString = "Server=PC-2010;user id=sy2010;password=123456;Database=Northwind;";
              //創(chuàng)建命令對(duì)象
              SqlCommand cmd = new SqlCommand();
              //設(shè)置命令對(duì)象的文本,表Customer本來(lái)是Customers,故意將s去掉的,以產(chǎn)生異常
              cmd.CommandText = "Select * from Customer";
              //設(shè)置命令對(duì)象的連接對(duì)象屬性
              cmd.Connection = conn;
              //創(chuàng)建數(shù)據(jù)適配器對(duì)象
              SqlDataAdapter sda = new SqlDataAdapter();
              //設(shè)置數(shù)據(jù)適配器對(duì)象的SelectCommand屬性
              sda.SelectCommand = cmd;
              //創(chuàng)建DataSet對(duì)象
              DataSet ds = new DataSet();
              //使用數(shù)據(jù)適配器對(duì)象填充數(shù)據(jù)集對(duì)象
              sda.Fill(ds);
              GridView1.DataSource = ds.Tables[0];
              GridView1.DataBind();
              其執(zhí)行結(jié)果如下圖:
                
        
      二、有異常處理代碼的程序
              //創(chuàng)建數(shù)據(jù)連接對(duì)象,連接Northwind數(shù)據(jù)庫(kù)
              SqlConnection conn = new SqlConnection();
              try
              {
                  conn.ConnectionString = "Server=PC-2010;user id=sy2010;password=123456;Database=Northwind;";
                  //創(chuàng)建命令對(duì)象
                  SqlCommand cmd = new SqlCommand();
                  //設(shè)置命令對(duì)象的文本,表Customer本來(lái)是Customers,故意將s去掉的,以產(chǎn)生異常
                  cmd.CommandText = "Select * from Customer";
                  //設(shè)置命令對(duì)象的連接對(duì)象屬性
                  cmd.Connection = conn;
                  //創(chuàng)建數(shù)據(jù)適配器對(duì)象
                  SqlDataAdapter sda = new SqlDataAdapter();
                  //設(shè)置數(shù)據(jù)適配器對(duì)象的SelectCommand屬性
                  sda.SelectCommand = cmd;
                  //創(chuàng)建DataSet對(duì)象
                  DataSet ds = new DataSet();
                  //使用數(shù)據(jù)適配器對(duì)象填充數(shù)據(jù)集對(duì)象
                  sda.Fill(ds);
                  GridView1.DataSource = ds.Tables[0];
                  GridView1.DataBind();
              }
              catch (SqlException ex)
              {
                  //使用異常捕獲的好處:第一、向管理員報(bào)告異常,第二、為用戶提供一個(gè)友好的提示:系統(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錯(cuò)誤信息”的程序代碼
              //創(chuàng)建數(shù)據(jù)連接對(duì)象,連接Northwind數(shù)據(jù)庫(kù)
              SqlConnection conn = new SqlConnection();
              try
              {
                  //user id本來(lái)為sy2010,現(xiàn)故意將其改為sy20101,以出現(xiàn)異常
                  conn.ConnectionString = "Server=PC-2010;user id=sy20101;password=123456;Database=Northwind;";
                  //創(chuàng)建命令對(duì)象
                  SqlCommand cmd = new SqlCommand();
                  //設(shè)置命令對(duì)象的文本
                  cmd.CommandText = "Select * from Customers";
                  //設(shè)置命令對(duì)象的連接對(duì)象屬性
                  cmd.Connection = conn;
                  //創(chuàng)建數(shù)據(jù)適配器對(duì)象
                  SqlDataAdapter sda = new SqlDataAdapter();
                  //設(shè)置數(shù)據(jù)適配器對(duì)象的SelectCommand屬性
                  sda.SelectCommand = cmd;
                  //創(chuàng)建DataSet對(duì)象
                  DataSet ds = new DataSet();
                  //使用數(shù)據(jù)適配器對(duì)象填充數(shù)據(jù)集對(duì)象
                  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對(duì)象各屬性的含義:
                        (1)Source,獲取生成錯(cuò)誤的提供程序的名稱
                        (2)Number,獲取一個(gè)標(biāo)識(shí)錯(cuò)誤類型的數(shù)字
                        (3)State,狀態(tài)編號(hào)其取值范圍為1至127,狀態(tài)編號(hào)指示發(fā)現(xiàn)錯(cuò)誤的源位置
                        (4)Class,獲取從SQL Server返回的錯(cuò)誤的嚴(yán)重程度(級(jí)別)
                        (5)Server,獲取生成錯(cuò)誤的SQL Server實(shí)例的名稱
                        (6)Message,獲取對(duì)錯(cuò)誤進(jìn)行描述的文本
                        (7)Procedure,獲取生成錯(cuò)誤的存儲(chǔ)過(guò)程或遠(yuǎn)程調(diào)用(RPC)的名稱
                        (8)LineNumber,從包含錯(cuò)誤的Transact-SQL批命令或存儲(chǔ)過(guò)程中獲取行號(hào)
                     */

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

      注:
      一、異常概念
         1.程序中錯(cuò)誤的類型
           (1)語(yǔ)法錯(cuò)誤
           (2)邏輯錯(cuò)誤
           (3)運(yùn)行時(shí)異常,比如數(shù)據(jù)庫(kù)連接不存在、被0除
         2.DOTNET異常處理機(jī)制
           程序發(fā)生異常后,將尋找異常處理代碼,如果不存在異常處理代碼,.NET Framework將處理該異常(演示異常發(fā)生狀況),.NET Framework處理異
      常的方式就是將異常信息報(bào)告給用戶
      二、異常處理方式
          1.try(捕捉異常/拋出異常)
          2.catch(抓住異常/處理異常)
            (1)抓異常的過(guò)程是一個(gè)匹配異常類的過(guò)程,如果匹配就執(zhí)行相應(yīng)的異常處理代碼
            (2)Exception是所有異常處理類的基類,將匹配所有的異常類
          3.finally(執(zhí)行資源清理)
            (1)不過(guò)是否發(fā)生異常都將執(zhí)行異常處理
            (2)finally不是必須的,在編程時(shí)可以根據(jù)需要進(jìn)行應(yīng)用
      三、Exception類
          1.System.Exception類表示在應(yīng)用程序執(zhí)行期間發(fā)生的錯(cuò)誤
          2.System.Exception 類是所有異常的基類型
            Message 屬性是 string 類型的只讀屬性,它包含對(duì)發(fā)生異常的原因的可讀描述
      四、自定義異常處理類
          1.如果在程序執(zhí)行過(guò)程中所引發(fā)的異常在C#中沒(méi)有定義,這是我們可以自定義異常處理類以向用戶提示異常信息。
          2.所有用戶自定義的異常處理類都直接或者間接從Exception類派生而來(lái)
            class MyException:Exception
            {
             public MyException(string strMessage):base(strMessage)
             {
             }
            }
      五、數(shù)據(jù)訪問(wèn)異常處理類
          1.在ADO.NET中,每一個(gè)數(shù)據(jù)提供程序都提供三種類型的類,這三種類型的類分別為Exception, Error, 和 ErrorCollection
          2.SQL Server數(shù)據(jù)提供程序提供了SqlException, SqlError和SqlErrorCollection
      六、使用SqlException類
          1.SqlException對(duì)象表示當(dāng) SQL Server 返回警告或錯(cuò)誤時(shí)引發(fā)的異常
          2.SqlException類的基類為System.Exception
          3.每當(dāng) SQL Server .NET Framework 數(shù)據(jù)提供程序遇到服務(wù)器生成的錯(cuò)誤時(shí),都將創(chuàng)建此類
      七、使用 SqlError類和SqlErrorCollection類
          1.SqlException.Errors屬性返回SqlErrorCollection類的一個(gè)對(duì)象
          2.SqlErrorCollection對(duì)象是SqlError對(duì)象的集合
          3.每一個(gè)SqlError對(duì)象封裝了由SQL Server服務(wù)器引發(fā)的錯(cuò)誤或者警告
      八、識(shí)別SQL Server 2000 錯(cuò)誤
          1.如果向SQL Server發(fā)送一個(gè)錯(cuò)誤的SQL命令,SQL Server將返回一個(gè)格式化的錯(cuò)誤消息
            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)第一部分為錯(cuò)誤消息編號(hào),在SQL Server中每一個(gè)錯(cuò)誤消息都有一個(gè)相應(yīng)的編號(hào)與之對(duì)應(yīng)。消息編號(hào)唯一標(biāo)識(shí)每一個(gè)錯(cuò)誤消息。
            (2)消息的第二部分為錯(cuò)誤的安全級(jí)別,其值在0到25之間,錯(cuò)誤安全級(jí)別代表錯(cuò)誤的種類
            (3)錯(cuò)誤消息的第三部分為狀態(tài)編號(hào),其取值范圍為1至127,狀態(tài)編號(hào)指示發(fā)現(xiàn)錯(cuò)誤的源位置
            (4)錯(cuò)誤消息的最后一部分為錯(cuò)誤的描述,SQL Server的錯(cuò)誤消息都存儲(chǔ)在系統(tǒng)表sysmessages中,可以通過(guò)查詢語(yǔ)句“select * from
      sysmessages”查詢出這些錯(cuò)誤消息 
          3.錯(cuò)誤安全級(jí)別
            范圍              說(shuō)明
            0–10    表示該消息并不是錯(cuò)誤消息,而僅僅是提供一些有用的信息
            11–16       11-16類別的錯(cuò)誤是由用戶導(dǎo)致的。例如安全級(jí)別16表示用戶執(zhí)行了一個(gè)錯(cuò)誤的更新操作
            17    SQL Server已經(jīng)使用了不可配置的資源,例如鎖
            18    代表非重大的內(nèi)部軟件錯(cuò)誤
            19    已經(jīng)超過(guò)了不可配置的資源限制
            20    當(dāng)前進(jìn)程殘生的錯(cuò)誤
            21    影響SQL Server所有進(jìn)程的錯(cuò)誤
            22    表或者索引被破外
            23    表示一個(gè)非法的數(shù)據(jù)庫(kù)
            24    表示硬件錯(cuò)誤
            25    代表系統(tǒng)錯(cuò)誤
      九、SQL SERVER錯(cuò)誤日志
          1.SQL Server維護(hù)一個(gè)錯(cuò)誤日志(文本格式)用于存儲(chǔ)服務(wù)器信息和錯(cuò)誤消息
          2.錯(cuò)誤日志文件可以幫助我們記錄下來(lái)各種出現(xiàn)的問(wèn)題和潛在的問(wèn)題
          3.SQL Server日志文件存儲(chǔ)在SQL Server根目錄下的LOG文件夾下,在這個(gè)文件夾下有不止一個(gè)日志文件,并且第一個(gè)文件為ERRORLOG
          4.可以使用記事本打開(kāi)日志文件
       
       
       
       

        本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評(píng)論

        發(fā)表

        請(qǐng)遵守用戶 評(píng)論公約

        類似文章 更多