2012-05-01 7 views
0

私が得たもの:SecureBasePageを継承グローバルのtry-catch(この場合はVB)

  • SecureBasePage.vb(ログインする必要がページによって継承される)
  • Default.aspx

場合はどうあるべきか:クライアントがDefault.aspxを要求したが、彼がログインしていないので、ログインするためにリダイレクトされます

0123。これは例外LoginExceptionになり、このコンストラクタ

Public Sub() 
     If userIsAuthenticated Then 

     Else 
      Throw New LoginException() 
     End If 

End Sub 

を持っています。今私はそれがクライアントをlogin.aspxにキックする何らかのグローバル例外ハンドラによってキャッチされるようにしたい。

私はApplication_Error()Global.asaxにありますが、これは例外ハンドラではなく、例外ハンドラではないと考えています。例外ハンドラは例外ではありません。したがって、この関数は、開発者が未処理の例外に関する電子メールを送信できるようにする可能性が高くなります。私は 'グローバル例外ハンドラ'の代わりに 'グローバル未処理例外ハンドラ'と呼んでいます。

コンストラクタの例外をスローするのを捕まえるために試してみることができるものはありますか?

答えて

0

ログインを必要とするすべてのページはSecureBasePageクラスから継承されるため、おそらくそこでロジックを実装するのが最も理にかかります。リダイレクトを処理するには、OnLoadまたはOnPreLoadのようなページメソッドの1つをオーバーライドするだけです。

エラーを処理するためにglobal.asaxに応じてアドバイスしないので、基本クラスがおそらく最も適切な場所です。親指の一般的なルールとして

EDIT

、あなたは、論理の流れを制御するための例外を使用しないでください。例外自体に有用なロギング情報が含まれていない限り、おそらくほぼすべての要求で使用されるロジックにとっては、有益なものよりもコストがかかります。

+0

はい、私は世界的にあまりにも自分の例外を作りたいので、私は世界的にそれをしたい理由は、次のとおりです。

この記事は、トピックにいくつかの有用なアドバイスを提供しています。そうすることで、そのページには束縛されずグローバルなものになります – Highmastdon

+0

このロジックを必要とするすべてのページが 'SecureBasePage'から継承されている場合、継承によって既にグローバルになっています。また、独自の例外を生成するのは良い方法ではありません。カスタムの例外は、設計の欠陥または制限のために予約する必要があります。 –

+0

「SecureBasePage」でそれを行うほうが良いかもしれませんが、カスタム例外の「ベストプラクティス」の使用法とそれをなぜこのように使用しないのかを説明する記事や何かを教えてもらえますか?これは私の上司に。彼はちょっと、例外を例外として使うことを主張している。 – Highmastdon

関連する問題