2009-10-21 7 views
11

従来のASPでは、アプリケーションレベルでエラーを処理する方法はありますか?従来のASPでは、アプリケーションレベルでエラーを処理する方法はありますか?

従来のASP 3でエラー/例外を処理するためのガイドラインはありますか? Server.GetLastError()はあまり動作しません。

私はASP.Net Global.asaxに見つかったApplication_Error()のようなものを探しています。

global.asaに相当するものはありますか?エラーをインテリジェントに記録するクラスはありますか?古いエンタープライズライブラリのようにASP3の例外処理...

ねえ、私は夢想家です!

おかげ任意のポインタ

のためにたくさん
+0

VB6オブジェクトを読み込んでいると仮定できますか? – ChaosPandion

+0

あなたは、ネットでIHttpModuleを作成し、Webサイトにエラーをトラップするために、あなたのモジュールをウェブサイトに接続することは可能だと思いましたか? –

+0

Global.ASAで懸念しているアプリケーションレベルの活動の例を挙げることができますか? ON ERROR RESUME NEXTを除いて、私は多くのことは考えていません。 – CLaFarge

答えて

10
try: 
    some code that can raise an error 
except: 
    do error handeling stuff 
finally: 
    clean up, close files etc 

はVBScriptでエミュレートすることができます:このWORを行う方法

class CustomErrorHandler 
    private sub class_terminate 
     if err.number > 0 then 
      do error handeling stuff 
     end if 
     clean up, close files etc 
    end sub 
end class  


with new CustomErrorHandler 
    some code 
    ... 
end with  

k?新しく作成されたインスタンスがスコープから外れると、 'class_terminate'メソッドが呼び出されます。これは、インターペーターが 'end with'ステートメントにヒットした場合、またはエラーのためにコールスタックが巻き戻された場合に発生します。それはネイティブのPythonのアプローチではそれほど綺麗ではありませんが、かなりうまく動作し、醜くはありません。

トップレベルのエラー処理については、同じ手法を使用できます。今回はwith文を使用せず、エラーハンドラのグローバルインスタンスを作成します。 Server.getLastError()が提供するASPErrorオブジェクトは、vbscriptエラーオブジェクトと同じではなく、IISがserver.transferを500:100エラーハンドラに渡した後にのみ使用可能で、ページに戻ってごみ。ハンドラの例:

class cDebugger 
    public sub do_debug 
    ' print debug data here 
    end sub 
    public sub class_terminate 
    if server.getlasterror().Number <> 0 then 
     response.clear 
     call do_debug 
    end if 
    end sub 
end class 
+0

すべてのリクエストにcDebuggerオブジェクトを作成することを意味しますか? –

+0

確かに。私たちはoure appに2つのデバッグクラスを持っています。本番環境では、電子メールごとにエラー報告を送信するものを使用し、開発時には、デバッグログを画面にダンプするものを使用します。開発と生産の切り替えは、アプリケーションオブジェクトの設定によって行われます。 –

+0

@JoostMoesker私はCustomErrorHandlerのアプローチ(try..catch..finally)を理解していますが、トップレベルのエラー処理のためのcDebuggerのアプローチは理解できませんでした。もっと詳しい例がありますか? – Oliver

5

残念ながらGlobal.ASAはApplication_OnStart, Application_OnEnd, Session_OnStart and Session_OnEndのメソッドしか提供していません。エラー処理はありません。

最も近いのが(AFAIK)IISでCustom Errors機能を使用して、エラーを処理する別のファイルまたはURLを指しています。私の意見で

Custom Errors Image

、あまりにも面倒です。これは、サイトがエラーなしで動作していることを知っているだけの安心のために、一部のWebサイトを移行させる欠落した機能です。

3

IISの500エラーページをカスタムエラー処理.aspページにマップします。このページではServer.GetLastErrorを使用して最後のエラーを取得し、エラー、クエリ文字列、サーバー変数などの詳細をメールで送信します。ユーザーにフレンドリーなメッセージが表示されます。

+0

これを行う方法はありますか** ASPエラーの場合のみ**、.NETコードの500のエラーはリダイレクトされませんか? –

+0

@JoshuaFrank私はエラー500:100はASPエラーのみであると思います – Oliver

関連する問題