推奨:ASPを使用してWebサイトを開発します一般的に、大規模なウェブサイトは、ASPをアーキテクチャに使用する可能性が低くなりますが、ASPは依然として中小規模のビジネスサイトで大きな市場範囲を占めています。 ASPは、シンプルで短い開発サイクルと簡単なメンテナンスに対して、中小規模のサイト管理者に好まれています。しかし、私が知る限り
7.4.2 VBScriptエラー処理
VBScriptでは、スクリプトインタープリターを見つけられないエラーを処理せず、ON ERROR Resume Nextステートメントを使用して次のステートメントを実行し続けます。このステートメントが処理されると、スクリプトエンジンは、発見されたエラーを支払うことなく、後続のプログラムを実行し続けます。ただし、このプロセスは、ステートメントが順番に実行される環境、つまりネストされた関数やサブルーチンには適用される環境にのみ適用されます。
1. ON ERROR Resume Nextステートメントを使用します
サブルーチンでエラーが発生した場合、ONエラーが再開される次のステートメントが実行されない場合、エラーは呼び出される環境に引き渡されます。このプロセスは、ON ERROR RESUMEで実行されている環境が次のステートメントが見つかるまで繰り返されるか、デフォルトのスクリプトエラーハンドラーが見つかり、エラーがASPに引き渡され、IISがデフォルトのエラーページを表示します。
この間違ったコールチェーンは、実行のエラーがプログラムの実行を停止するのを防ぐ機能とサブルーチンを作成できることを意味します。 ONエラー履歴書の次のステートメントがサブルーチンの先頭に配置された場合、実行時エラーはサブルーチンの実行を中止しますが、サブルーチンを呼び出すプログラムは、Webページを停止せずに実行し続けます。
たとえば、ファイルに文字列を書き込む必要がある場合は、独立した関数を介してファイルにアクセスして、エラーがプログラム全体の実行を中断しないようにすることができます。
'Strfilenameという名前のファイルを作成し、その名前を既存のファイルに上書きする
'そしてそれにstrcontentを書き込み、その後ファイルを閉じます
「エラーが成功した場合、またはエラーで偽りを返す
function writeNewfile(strfilename、strcontent)
エラーの再開時に次の 'デフォルトのエラーハンドラーをオフにします
witeNewfile = flase '機能のデフォルトの戻り値
objfso = createObject(scripting.filesystemObject)を設定します
err.number = 0の場合、objfile = objfso.createTextfile(strfileName、true)を設定します
err.number = 0の場合、objfile.writeline strcontent
err.number = 0の場合、objfile.close
err.number = 0の場合、writeNewfile = true
エンド関数
上記のプログラムは、各プログラムステートメントを処理しようとする前に、VBScriptのERRオブジェクトの番号プロパティをチェックしていることに注意してください。この値が0の場合(エラーはまだ発生していません)、ファイルのファイリングと作成のプロセスを継続できます。ただし、エラーが発生した場合、スクリプトエンジンはERRオブジェクトのプロパティの値を設定し、次の行を処理し続けます。
エラーを引き起こすことなく正常に実行できる限り、関数の返品値はtrueに設定されます。それ以外の場合、関数はfalseを返します。プログラミングでは、この関数を使用して、テスト後に他のアクションを実行できます。
簡単な例を次に示します。タスクの最初の部分に個別の関数を使用して、エラーが発生する場所をより正確に識別できるようにします。これにより、デバッグ中にコードを読みやすくなります。ページのメインプログラムでは、3つの個別の関数を呼び出すことができます。
CreateNewFile(strfileName)の場合、新しいファイルを作成します
response.write newファイルは正常に作成されました<br>
writecontent(strcontent)の場合、コンテンツを書きます
response.write file <br>に書き込まれたコンテンツ
それ以外
response.writeエラー:ファイルに書き込みに失敗しました<br>
ifを終了します
closefile(strfilename)の場合
response.writeファイルが閉じている<br>
それ以外
response.writeエラー:ファイルを閉じることができませんでした<br>
ifを終了します
それ以外
response.writeエラー:新しいファイルの作成に失敗しました<br>
end funciotn
2。エラーgoto 0を使用します
ASP 2.0(ドキュメントはありませんが)およびASP 3.0では、ON ERROR GOTO 0ステートメントを使用してデフォルトのエラー処理動作を復元することもできます。このステートメントを実行した後、発生する実行時エラーはデフォルトのエラー処理を引き起こし、メインページコードまで環境チェーン内の各ネストされたプログラムを確認します。デフォルトのエラー処理をオフにする他の環境がない場合、Webページの実行が停止し、IISデフォルトエラーページを表示します。
3。vbscripterrオブジェクト
前の例では、デフォルトのエラー処理がオフになったら、VBScript ERRオブジェクトの番号プロパティをチェックすることにより、エラーが発生したかどうかを確認します。 ERRオブジェクトは、ランタイムエラーに関する情報を保存します。表7-3および7-4は、VBScript ERRオブジェクトによって提供されるメソッドとプロパティを示します。
表7-3 VBScript ERRオブジェクトの方法
方法
説明します
クリア
現在のすべてのERRオブジェクト設定をクリアします
上げる
ランタイムエラーが発生しました
表7-4 VBScript ERRオブジェクトのプロパティ
財産
説明します
説明
エラーを説明する文字列を設定または返します
番号
(デフォルト)指定されたエラー値を設定または返します
ソース
エラーを生成したオブジェクトの名前を設定または返します
これらのプロパティを使用して、どのエラーが発生するかを確認します。たとえば、エラー番号に基づいてさまざまな測定値を取得するか、ソースと説明のプロパティ値を使用してユーザーにエラー情報を提供したり、ファイルに転送したりできます。
ERRオブジェクトを使用してエラーを生成することもできます。なぜこれらのことをするのですか?時々、カスタマイズされたエラーメッセージをユーザーに送信したいからです。 ERRオブジェクトのプロパティは、任意の値に設定できます。次に、Raiseメソッドを呼び出して、このエラーを生成します。そうすることで、プログラムを停止し、コールチェーンに沿ってエラーを渡します。
次の例は、サーバーディスク上のテキストファイルを読み取るときにエラーを処理する方法を示しています。注意定数vboBumecterrorを使用して、選択したエラー番号が既存のエラー番号と混同されないことを決定する方法。選択したエラー番号をこの定数に追加することにより、事前定義されたエラーと混同しないことが保証されます。
funtoin readthisfile(strfilename) ''コンテンツを文字列として返します
エラーの再開時に次に再開します
readthisfile = '関数のデフォルトの返品値
objfso = createObject(scripting.filesystemObject)を設定します
objfile = objfso.opentextfile(strfilename、forreading)を設定
case err.numberを選択します
ケース0 'OK、アクションを実行しません
ケース50、53 '標準ファイルまたはパスが見つかっていないエラー
'カスタムエラー値を作成し、コールチェーンをバックアップするエラーを上げる
interrnumber = vbobecterror 1073 'カスタムエラー番号
strerrdescript
共有:ASPを使用してクライアントの実際のIPのアドレスを取得する方法は?プロキシサーバーを介してクライアントの実際のIPアドレスを取得するには、request.servervariables(http_x_forwarded_for)を使用して読む必要があります。ただし、すべてのプロキシサーバーがrequest.servervariabを使用できるわけではないことに注意してください。