私はプロジェクトのインフラストラクチャを設計していますが、例外のメッセージをパラメータでフォーマットして動的にすることをお勧めしますか?動的例外メッセージは良い考えですか?
これは、例外メッセージが本当に冗長である可能性があることを意味します。
私の意見では、いくつかのメッセージは期待できないという欠点があります。これらは、例外処理、メッセージがこのかどうか、そしてそれがロギングされているかどうかをテストする際に(ベストプラクティスではありませんが)使用できます。しかし、もっと邪魔になるのは、あなたがどこかでそのメッセージを表示しようとすると、ローカリゼーションをもっと難しくするということです。
だから私の質問はあなたがそれを取ることであり、妥協の解決策を持っているかどうか、私に冗長性(例外を記録する場合)と一貫性の両方を与えてくれます。
ありがとうございました。
私はMSDNのどこかでこの記事を読んでいましたが、そこではいくつかの大きな例外の例外は、例外のための独自の階層を作成することは悪い習慣であると言いました。同氏は、.NETはすでに(自分の意見では)カスタム例外をあまりにも多く定義しており、ほとんどの場合、メッセージの指定で十分であるはずだと述べた。しかし、ローカリゼーションはどうですか?私は例外のメッセージとして辞書キーを送信したいと思います。内部.NETでの処理と同様です。 –
まあ、正直言って、私は例外をローカライズしたことはありません。彼らはいつも平易な英語でした。しかし、通常、javaのMessageフォーマット( '{2}のパラメータ{1}はいいです)'や、.NETのそれとは何か違うものがあります。私はそれが行く方法だと思う。 (ところで、誰が辞書キーを使ったらそれを解決しますか?)。また、デフォルトのもの(invalidParameterExceptionなど、それをコード化しないでください)には、.NETに同梱されているExceptionsを使用しますが、デフォルトのものでカバーされていないものについては、独自のものを作成する方が良いと思います。私の意見。 – yankee
@ Yam:ほとんどの.net例外は、捕捉の観点からはかなり役に立たない。有用な例外階層は、.netの階層とほぼ同じくらいの例外を持つ必要はありませんが、システム状態のどの側面が妨げられているかどうかを定義する必要があります。ネットの階層構造を考えると、多くの場合、最も一般的な例外をキャッチしてラップするだけでなく、システムの状態への影響を記述する例外もあります。 – supercat