私はメソッドの数を持つクラスを持っていて、それらのために1つの例外ハンドラを持ちたいと思っています。 これらのメソッドには非常に多くのものがあり、それらはそれぞれ異なるパラメータを持っているため、それぞれのtry/catchを書くのは面倒です。クラスのすべての例外のための1つの例外ハンドラ
多分、私はそれをすべて処理するクラス例外ハンドラを持つことでそれを行う方法を知っていますか?
UPDATE:
あなたの多くは、なぜ私に尋ねます。その理由は、さまざまな方法でデータソースを呼び出すためです。 私のクラスは、関数getData1、gedData2、getData3、getData4、....、getDataNを持っています。問題は、接続がまだ開いていて新しい接続を作成するのが非常に高価であるかどうかを確認する方法がないことです。だから私は接続を再利用しようとしています、そして、次の呼び出しの接続が失敗した場合、私はこれをキャッチして、再接続して、やり直します。だから私はこのtry/catchブロックが必要なのです。すべての機能のためにこれを行うには
:
try{
datasource.getData()
}
catch(ConnectionException)
{
datasource.Connect();
datasource.getData()
}
おかげ
私はそれが古い質問です知っているが、私はほとんどの回答に同意するものの、ことを言いたかったですその質問が尋ねられた日に提出された以下の質問には、この能力が非常に役に立つ時があります。私は別のシナリオがあるので、この質問を見つけました。ジャック・アランの答えは私のシナリオではうまくいきませんが、それは他の状況でも役に立ち、非常に賢いですから、私はそれを上回りました。つまり、Jackの「ソリューション」を使用する前に、これを必要としないようにコードを構造化する他の方法がないことを確認してください。 –
このような仕組みはなく、IMHOは存在してはいけません。制御フローがどのように引き渡されるかとは一貫していません。あなたがしなければならないことが「醜い」ということは重要ではありません。あなたがした解決策が、余分なコードを書くことを必要とすることは重要ではありません。重要なことは、分かりやすいソフトウェアを書くことができ、後で、あなた(または他の誰か)が元の詳細を忘れてしまったときに維持できることです。例外が発生したときにメソッドが何らかの処理を行う必要がある場合、メソッドには何をすべきかが記載されている必要があります。これは良いことです。 – ToolmakerSteve
ところで、私はこれが大きな質問だと思うので、質問をアップアップしました。それは正統であり、他人にとってこれをやりたいと思っています。なぜこれを行う方法がないのか、何をすべきかを理解していること(理解していないにもかかわらず、あなたの質問にはあなたがしている)を理解することは、他者にとって有益なことです。 – ToolmakerSteve