問題タブ [custom-exceptions]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
87964 参照

python - エラー コードとエラー メッセージを含むカスタム Python 例外

...

validate() と __validateMulti() は、渡された入力パラメータを検証して保存するクラスのメソッドです。コードから明らかなように、一部の入力パラメーターが欠落している場合や一部の検証が失敗した場合に、いくつかのカスタム例外を発生させます。

アプリに固有のカスタム エラー コードとエラー メッセージをいくつか定義したいと思います。

エラー 1100: 「キー パラメータが見つかりません。入力内容を確認してください。」

エラー 1101:「日付パラメーターが見つかりません。入力内容を確認してください」

...

エラー 2100: 「複数日パラメーターは無効です。使用できる値は 2、5、および 7 です。」

そして、それをユーザーに報告します。

  1. カスタム例外でこれらのエラー コードとエラー メッセージを定義するにはどうすればよいですか?
  2. 表示するエラーコード/メッセージを知る方法で例外を発生/トラップするにはどうすればよいですか?

(PS: これは Python 2.4.3 用です)。


Bastien Léonard は、このSO コメントで、常に新しいorを定義する必要はないと述べています。デフォルトでは、引数は self.args に配置され、 によって出力されます。__init____str____str__

したがって、私が好む解決策:

使用法:

0 投票する
2 に答える
2194 参照

python - 単体テストでは、カスタム例外に渡されるパラメーターをどのように決定できますか?

..。

上記のユニットテストでは、MissingInputテストクラスで次のテストが行​​われていることがわかります。

MissingInputError例外が発生したかどうかを正しく検出します。

テストで、例外の呼び出し中にどのエラー番号が例外に渡されたかを判断する方法はありますか?そうすれば、他の欠落している入力ではなく、その特定の欠落している入力に対してエラーが発生していることを確認できますか?

(PS:Python 2.4.3)。


ヒント:2.4から2.6に固執している場合は、 unittest2ライブラリを使用してください。Python 2.7および3.2では、ユニットテストに対する多くの改善が行われる予定です。unittest2は、Python 2.4、2.5、および2.6で動作する新機能(およびテスト)のバックポートです。

0 投票する
5 に答える
1685 参照

c# - 一般的なカスタム例外を実装することの長所と短所

次のようにカスタム例外を実装することの長所と短所は何ですか。
説明にエラーメッセージを表す列挙型を作成します。

カスタム例外クラスを作成します。

このGetDescriptionメソッドは、リフレクションを使用して列挙型の説明を取得する列挙型拡張メソッドです。このようにして、次のような例外をスローできます。

そして、次のようなキャッチブロックでユーザーに表示します。

私はこのアプローチがMVPによって推奨されているのを見てきました。次の点に対するこのアプローチの利点は何ですか。

  • 一般的な例外の使用:throw new Exception( "Error Message");。
  • カスタム例外の使用:あらゆる状況でカスタム例外を定義します。例(WebServiceExceptionクラス、AuthenticationExceptionクラスなど)

MVPによる推奨へ のリンクは次のとおりです。

ありがとうございました。

0 投票する
5 に答える
1013 参照

c# - Exception.HelpLinkを(誤)使用して例外オブジェクトを認識しても大丈夫ですか?

Exceptionロギングプログラムに取り組んでいますが、ネストされた呼び出し構造を介して浸透しているため、繰り返しロギングされているときに同じオブジェクトを繰り返し処理することは避けたいと思います。そのため、Exceptionオブジェクトを1回フォーマットし、フォーマットされたバージョンに一意の「例外番号」を付けてから、Exceptionオブジェクトに何らかのタグを付けて、後のログ呼び出しで再び検出された場合に認識できるようにしたいと思います。

私が思いついたアイデアは、オブジェクトのHelpLinkフィールドを誤用することです。Exception「例外番号」の文字列バージョンを含むように設定します。次にException、別のログ呼び出しでオブジェクトが一時的に再び表示された場合、そのオブジェクトを認識できます。

しかし、これはおそらく悪い考えですか?思いもよらなかった落とし穴はありますか?もしそうなら、誰かがより良いアイデアを持っていますか?

編集:状況をもう少し説明するために、このロガーは私自身のプログラムでのみ使用されます。

0 投票する
1 に答える
1726 参照

python - ファイルを開くときにpywin32com例外をキャッチする方法

COMを使用してPythonでExcelファイルを開こうとしていますが、ファイルが見つからないというエラーをキャッチしようとしています。

私は最初にIOErrorをキャッチしようとしました:

ただし、COMは、ファイルが見つからないという問題がある場合、IOエラーを発生させません。代わりに、com_errorと呼ばれるものを発生させます。

com_error:(-2147352567、'例外が発生しました。'、(0、u'Microsoft Office Excel'、u "'asdf.xlsx'が見つかりませんでした。ファイル名のスペルを確認し、ファイルの場所が正しいことを確認してください。\n\ n最近使用したファイルのリストからファイルを開こうとしている場合は、ファイルの名前が変更、移動、または削除されていないことを確認してください。 "、u'C:\ Program Files(x86)\ Microsoft Office \ Office12 \ 1033 \ XLMAIN11.CHM'、0、-2146827284)、なし)

論理的に私はこれを試しました:

しかし...

0 投票する
1 に答える
879 参照

debugging - IronPythonとVS2010のデバッグの問題

IronPythonとVS2010を使い始めましたが、デバッグ環境に問題があります...誰かが私を正しい方向に向けることができますか?私のPythonの知識は1週間も経っていないので、私の問題は自傷行為である可能性が高いことに注意してください。

最も厄介な問題は、例外が発生したときに、VSデバッガーが例外が発生した場所で壊れないことです...むしろ、最上位レベルで壊れているように見えます。これにより、例外が発生した場所を特定し、ブレークポイントとステッピングの苛立たしい演習を行うことができます。

もう1つの厄介な問題は、カスタム例外を発生させることです。デバッガーは例外のクラス名のみを通知し、メッセージは通知しません(ただし、ネイティブのiron python例外には両方が含まれます)。例えば:

発生した場合(たとえば、「raise MyCustomError('some nice message')」)、$exceptionのデバッガーで表示できるのは「MyCustomError」だけです。クラス名だけでなく、価値。

どんな助けでもいただければ幸いです!!

0 投票する
3 に答える
1997 参照

c++ - キャッチできないカスタム例外C++

これは私を一晩中夢中にさせてきました。

このカスタム例外をライブラリから次のようにスローします

そしてメインビアでそれをキャッチします

Id::set_pattern_validatorライブラリのIdクラス内の静的メソッドであり、例外のソースです。例外をキャッチするためにできる限りのことを試みましたが、キャッチできません。

端末出力は次のとおりです。

「'Exception'what()のインスタンスをスローした後に呼び出された終了:パターンバリデーターは一度設定すると変更できません。トラップを中止してください。」

ヤギを犠牲にすることを除いて、私は次に何を試すべきか途方に暮れています...ヒント/ヒント???

注:main内でカスタム例外をスローした場合、問題なくキャッチできます。

C++0xをサポートするGCCを使用するMacOSX環境。

編集:今のところ解決策は、Linuxベースのシステム(Fedora)で開発を続けることです。現時点では回答を受け付けていません。みんな助けてくれてありがとう。

0 投票する
3 に答える
10196 参照

ruby-on-rails-3 - 再利用/継承のための既存のRailsエラークラスのリストの取得

多くの場合、custom(ized)エラーをスローする必要があります。パラメータの不一致などによりリソースが見つからない場合など。

私は既存のエラーをスローするか、既存のエラーから継承されたエラーをスローすることを好みます。そのため、すでに定義されていて完全に使用できた可能性のあるエラークラス(DRY)は紹介しません。ただし、元のエラーとの違いを明確にするために1つまたは2つの単語を継承して変更するだけで、表現とスタイルを同じに保つこともできます。

例えば:

そのようなエラーはすでに定義されていると確信しています。実際、多くのコード行を読んだ後、MongoIDドライバーにが含まれていることがわかりましたMongoid::Errors::InvalidOptions: Calling Document#find with nil is invalid

RubyCoreとRubyonRailsで利用可能なエラークラスのリストはありますか?現在のプロジェクトでそのようなリストを取得する方法はありますか?

既存のエラーを再利用および/または継承するのは賢明ですか、それとも代わりに独自のカスタムセットを維持する必要がありますか?

0 投票する
2 に答える
507 参照

python - python-ldap の例外は階層構造になっていますか?

私はこのようなコードを持っています:

さまざまな種類の例外をキャッチしようとしています。ただし、すべての例外は SERVER_DOWN に分類されます。例えば、タイムアウト例外があるとSERVER_DOWN例外に陥る、など。例外の階層みたいなものがあるのか​​なと思っていて、それが原因で常にSERVER_DOWN状態に陥ってしまうのです。または、このコードに他の問題がありますか? この問題について何か意見はありますか。前もって感謝します。

0 投票する
4 に答える
835 参照

c# - 自分の例外を表示するには?

カスタム例外クラスを追加する必要がある Web プロジェクトを開発しています。たとえば、セッション タイムアウトが発生したときにカスタム例外クラスからメッセージを表示するにはどうすればよいですか? 助けてください。どのサンプルも役に立ちます。

これは、これまでに例外クラスに書いたものです。

これをセッション タイムアウトとリンクする方法を知る必要があります。ここから、同じロジックを記述する必要があります。ありがとうございました。