3つの主なエラータイプがあります。
コンパイルエラー:
この種のエラーは、コード構文の問題のために一般的に発生します。
コンピレーションエラーのため、動詞ASPは実行を停止しました。
エラーを実行します
このエラーは、ASPを実行する準備ができたときに発生します。
たとえば、変数に値を割り当てようとしますが、変数で許可されたスコープを超えています。
論理エラー
論理的なエラーは、この種のエラーを検出するのが最も困難です。
これには、コードを徹底的に確認する必要があります。
コンピレーションエラーは通常、論理エラーとともに発生し、一般に表示される可能性があるため、心配しているのは操作エラーです。 ASPの操作を終了し、ユーザーには不親切なテキストの束を残します。
では、操作エラーにどのように対処しますか! ?最初にASPによって提供される唯一のエラーコマンド - 次にエラーの履歴書を思い出させたいと思いますが、ASPの次の声明のみがありますが、エラー履歴書はgotoステートメントではありません)エラーの次のステートメントでは、すべての実行エラーが致命的であり、エラーコードがユーザーに表示され、ASPプログラムも停止します。
これがエラーコードです:
ODBCドライバーエラー80004005のMicrosoft OLE DBプロバイダー
[Microsoft] [ODBC Driver Manager]データソース名が見つからず、デフォルトのドライバーが指定されていません
/test.asp、60行
プログラムの上部でON ERROR Resume Nextステートメントを使用すると、すべてのエラーが無視され、プログラムは次のステートメントを自動的に実行します。このようにして、プログラムは完全に実行され、ユーザーはエラーが発生した後にエラーメッセージが表示されません。しかし、この方法では不利な点もあります。つまり、プログラムが想像するように実行されない場合、何が間違っているのかを知ることは難しいので、必要に応じてエラーに対処する必要があります。
取り扱いエラー
ASPでは、エラーに対処する最良の方法は、エラーを処理するためにプログラムの下部にコードを配置することです。また、すべてのASPプログラムでバッファーを使用することをお勧めします。このようにして、エラーが発生した場合、ページは停止し、ページコンテンツがクリアされ、ユーザーがエラーメッセージが表示されず、あなたに関する苦情が少なくなります!これが例です:
<%@言語= vbscript%> <% 'バッファーを真の応答に設定します。buffer= true'エラー履歴書でエラー処理を開始しますresume next> <% 'err.number <> 0 then' clear page response.clear 'ユーザーへのエラーメッセージを表示> <html> <head> <title> </title> </head> <body bgcolor =#c0c0c0> <font face = arial>このASPページの実行で発生したエラー<br>次のことを報告してくださいサポートデスクへの情報<p> <b>ページエラーオブジェクト</b> <br>エラー番号:<%= err.number%> <br>エラーメッセージ:<%= err.description%> <br>エラーメッセージ:<%= err.description%> <br>エラーが発生したファイル:<%= err.source%> <br>エラーライン:<%= err.line%> <br> </font> </body> </html> <%end if>
上記のように、最初にエラーの再開を次に設定して、エラーがプログラムの実行に影響しないようにします。
エラー処理とデータベース
エラー処理にデータベースを追加することの実行は非常に複雑です。データベースにレコードを追加する多くのコマンドを備えたプログラムがある場合、プログラムの下部で挿入/更新が実行された場合、エラーが再び発生した場合、それは終了します!データベースにエラーメッセージを追加します。次にエラー履歴書で使用したため、すべてのエラーは無視されました!以前にエラーが発生した場合でも、プログラムはデータベースにデータを追加します。
この状況を避けるために、最初にいくつかのトリックを行う必要があります。
err.number = 0およびobjconnection.errors.count = 0の場合、 'エラーセットがないため、ここでステートメントを実行できますrstreSults = dbdata.execute(txtsql)end if
より高度なソリューション
エラーが発生した場合、より多くのエラーメッセージを表示することもできます。以下は、データベースとページの両方のエラーを処理する例です。 (英語はいくつかの場所で話すのがより難しいと思うので、翻訳はありません)。
<%err.number <> 0の場合、response.clear select case err.number case 8 'エラー番号を指定します'ケースをここに指定します '一般エラーisobject(objconnection)の場合はobjconnection.errors.count> 0 then%> < b>データベース接続オブジェクト</b> <%in intloop = 0からobjconnection.errors.count -1%>エラー番号:<%= objconnection.errors(intloop).number %> <br>説明:<%= objconnection.errors(intloop).description%> <br>出典:<%= objconnection.errors(intloop).source%> <br> sqlstate:<%= objconnection.errors( intloop).sqlState%> <br> nativeerror:<%= objconnection.errors(intloop).NATINERROR%> <P> <%次の終了If End if err.Number <> 0 then%> <b>ページエラーオブジェクト</b> <br>エラー番号<%= err.number%> <br>エラー説明<%= err.description%> <br> source <%= err.source%> <br> lineNumber <%= = err.line%> <p> <%end end end end exh end if>
上記の例では、データベースで発生する多くの問題に対処することができます。これは、毎日のプログラミングでも一般的に使用されています。また、特定のエラーを処理できるSelect Case Statementを確認する必要があります。
リダイレクトとエラー処理
注意すべきことの1つは、リダイレクトオブジェクトがページに表示される場合、エラー処理がその意味を失うことです。したがって、次のように、回す前に対処する必要があります。
err.number = 0およびobjconnection.errors.count = 0の場合
コードをよりきれいにします
コードをよりきれいにするには、最初にファイルを含むエラー処理ファイルを配置します。これにより、任意のファイルで使用できます。これは変更するのにも便利です。
(もちろん、言語宣言の後に)on error resume次の声明をプログラムの上部に追加します。
SQLを実行する前にエラーチェックを行います。
リダイレクトを使用する前に、エラー処理も必要でした。
コードの上部にあるファイルを含むエラーを処理させてください