<source id="4vppl"><ins id="4vppl"></ins></source>
<u id="4vppl"><sub id="4vppl"><label id="4vppl"></label></sub></u>
<object id="4vppl"></object>
  • <u id="4vppl"><li id="4vppl"><label id="4vppl"></label></li></u>

    <object id="4vppl"></object>
    <b id="4vppl"><sub id="4vppl"><tr id="4vppl"></tr></sub></b>

      <i id="4vppl"><thead id="4vppl"></thead></i>

      <thead id="4vppl"><li id="4vppl"><label id="4vppl"></label></li></thead>

      當前位置:首頁 > 網站舊欄目 > 學習園地 > 程序開發教程 > ASP錯誤處理

      ASP錯誤處理
      2010-01-17 10:40:09  作者:  來源:
      簡單介紹
      asp是很簡單的,以至于許多的研發者不會去思考錯誤處理。錯誤處理能夠讓您的應用程式更加合理。我看到過很多個用asp編寫的商業網站,大多數都忽略了錯誤處理。
      錯誤的類型
      有三種主要的錯誤類型:
      編譯錯誤:
      這種錯誤出現一般都是代碼的語法問題。因為編譯錯誤而導致辭asp停止運行。
      運行錯誤
      這個錯誤是發生在您準備運行asp時的。例如:假如您試圖給一個變量賦值,但是卻超出了該變量允許的范圍。
      邏輯錯誤
      邏輯錯誤是最難被發現的,這種錯誤經常是一種結構錯誤,電腦是發現不了的。這就需要我們徹頭徹尾地檢查我們的代碼。
      因為編譯錯誤一般是和邏輯錯誤一起發生的,一般都能顯示出來,所以我們擔心的就只是運行錯誤。他都終止asp的運行,而且給用戶丟下一堆很不友好的文字
      那么我們要怎樣處理運行錯誤呢!?我們先來看看,asp唯一提供給我們的錯誤命令---on error resume next(這里提醒一下初學者,在asp中只有on error resume next語句,沒有on error resume goto語句)
      假如您不使用on error resume next語句的話,一切運行錯誤都會發生,這個是致命的,那么就會有一段錯誤代碼“展現”給用戶,而且asp程式也會停止。

      下面就是個錯誤代碼:


      microsoft ole db provider for odbc drivers error 80004005
      [microsoft][odbc driver manager] data source name not found and no default driver specified
      /test.asp, line 60


      當我們在程式最上面使用on error resume next語句時,任何的錯誤都會被忽略,程式會自動執行下一條語句。這樣程式就會完全執行,出錯后用戶也不會看到出錯信息。但是這樣也有不好的地方,那就是假如程式沒有按照您想像的執行的話,您就很難找到到底是哪里出了問題,所以您就得在必要的地方對錯誤進行處理。
      處理錯誤
      在asp中,處理錯誤的最好的辦法就是在程式最底端放上代碼來處理錯誤。我也推薦在每個asp程式都使用緩沖區。這樣的話,假如錯誤發生,頁面就會停止,頁面內容也會被清除,這樣用戶就不會看到錯誤信息,對您們的抱怨也就少了!下面是個例子:
      <%@ language="vbscript" %>
      <% 配置buffer為true
      response.buffer = true
      開始錯誤處理
      on error resume next
      %>
      <% 錯誤處理
      if err.number <> 0 then
      清除頁面
      response.clear
      顯示錯誤信息給用戶
      %>
      <html>
      <head>
      <title></title>
      </head>
      <body bgcolor="#c0c0c0">
      <font face="arial">an error occurred in the execution of this asp page<br>
      please report the following information to the support desk<p>
      <b>page error object</b><br>
      錯誤 number: <%= err.number %><br>
      錯誤信息: <%= err.description %><br>
      出錯文檔: <%= err.source %><br>
      出錯行: <%= err.line %><br>
      </font>
      </body>
      </html>

      <%end if%>


      您們上面看到了,我首先配置on error resume next ,這樣出現錯誤就不會影響程式的執行。

      錯誤處理和數據庫
      在錯誤處理中加入數據庫的執行是很復雜的。假若我們有一個程式,有很多的命令去向數據庫中添加記錄,假如insert/update在程式的最底部執行,假如我們前面又錯誤發生,那就完了!我們就會向數據庫中添加了一個錯誤的信息。因為我們用了on error resume next 一切的錯誤都被忽略了!即使前面出錯,程式依舊會向數據庫中添加數據的。
      為避免這種情況,我們就先得做些手腳,正確處理的方法如下:

      if err.number = 0 and objconnection.errors.count = 0 then

      這里才能執行語句,因為沒有錯誤
      set rstresults = dbdata.execute(txtsql)

      end if



      更多高級的處理辦法
      當一個錯誤發生時,您們也能夠顯示更多的錯誤信息。下面是同時處理數據庫和頁面錯誤的例子,有了他我們一下就能發現我們程式中的任何錯誤。(由于有些地方我覺得英文更能說時問題,所以沒有翻譯)。
      <%
      if err.number <> 0 then
      response.clear
      select case err.number
      case 8 指定錯誤的number
      在這里處理自定義錯誤

      case else 一般錯誤

      if isobject(objconnection) then
      if objconnection.errors.count > 0 then
      %>

      <b>database connection object</b>

      <% for intloop = 0 to objconnection.errors.count - 1 %>

      error no: <%= objconnection.errors(intloop).number %><br>
      description: <%= objconnection.errors(intloop).description %><br>
      source: <%= objconnection.errors(intloop).source %><br>
      sqlstate: <%= objconnection.errors(intloop).sqlstate %><br>
      nativeerror: <%= objconnection.errors(intloop).nativeerror %><p>

      <% next
      end if

      end if
      if err.number <> 0 then
      %>

      <b>page error object</b><br>
      error number <%= err.number %><br>
      error description <%= err.description %><br>
      source <%= err.source %><br>
      linenumber <%= err.line %><p>

      <% end if
      end select
      end if
      %>


      上面的例子讓我們一下了處理了很多在數據庫中出現的問題,這個在我們日常編程也是常用的!我們也應該看到那個select case 語句,他能讓我們來處理特定的錯誤。
      redirect 和錯誤處理
      有一點我們就當注意一下,就是我們常用到的redirect對象,假如一個頁面中出現了redirect對象,那么錯誤處理就失去了意義。所以在轉向之前我們還得處理一下,如下:

      if err.number = 0 and objconnection.errors.count = 0 then


      response.clear
      response.redirect ?lt;url here>?

      end if



      把代碼變得更整齊
      為了讓代碼變得更整齊,首先把錯誤處理的文檔放在一個包含文檔中。這樣您就能夠在任何文檔中使用他。這樣修改也方便。
      在您程式的最上方加入(當然在語言聲明之后)on error resume next語句。
      在您執行sql以前進行錯誤檢查。
      使用redirect以前也要進行錯誤處理。
      讓您處理錯誤的包含文檔在代碼的最上面
      安徽新華電腦學校專業職業規劃師為你提供更多幫助【在線咨詢
      相關熱詞搜索:錯誤 處理
      国产午夜福三级在线播放_亚洲精品成a人片在线观看_亚洲自慰一区二区三区_久久棈精品久久久久久噜噜
      <source id="4vppl"><ins id="4vppl"></ins></source>
      <u id="4vppl"><sub id="4vppl"><label id="4vppl"></label></sub></u>
      <object id="4vppl"></object>
    1. <u id="4vppl"><li id="4vppl"><label id="4vppl"></label></li></u>

      <object id="4vppl"></object>
      <b id="4vppl"><sub id="4vppl"><tr id="4vppl"></tr></sub></b>

        <i id="4vppl"><thead id="4vppl"></thead></i>

        <thead id="4vppl"><li id="4vppl"><label id="4vppl"></label></li></thead>
        欧美国产亚洲日韩在线二区 | 亚洲精品福利在线视频 | 午夜自产精品一区二区三区 | 亚洲人993在线观看 伊人久久综在合线亚洲91 | 青青青国产依人在线观看 | 亚洲综合中文字幕乱码在线 |