2017-08-21 30 views
-1

add()メソッドを使用してコレクションに要素を追加しているときに、UnsupportedOperation,IllegalArgumentException,NullPointerExceptionClassCastException,Collection#add()メソッドを処理するのがよいですか?私はJava RuntimeExceptionを処理する必要がありますか?

+0

これらのことが起こらないような方法でコードを記述することをお勧めします。表示されるエラーは、一般的にプログラミングエラーを示します。 – khelwood

+1

ようこそスタックオーバーフロー! [ツアー]を見て回り、[ヘルプ]、特に[*どのように良い質問をしますか?*](/助け/やり方)、[* *](/ help/dont-ask)、[*ここではどのような話題を聞くことができますか?*(/ help/on-topic)* "多くの良い質問は、この質問への回答は、事実、参考文献、または特定の専門知識ではなく、概ね意見に基づいている傾向があります。」* –

答えて

1

いいえ、発生しないことがわかるようにコードを記述する必要があります。私。変更不可能なコレクションを変更しようとしないでください。その結果、UnsupportedOperationExceptionなどになります。

さらに、それらを処理する方法はありますか?

+0

ありがとうございました。デザインの匂いに応じて、このようなオブジェクトを作成するときに例外を処理する必要があることを示す「反響階層」というトピックがあります。 strList = new ArrayList <>(); 以下はリンクです http://www.jot.fm/issues/issue_2013_06/article1.pdf 上記リンクセクション5.4.6 –

1

「ハンドル」の意味によって異なります。

どこかのアプリケーションには、のログが必ず記録されます。必ずしもCollection.add()コールに近いとは限りません。トップレベルのラッパーのほうがずっと良い場所かもしれません。

ただし、これらの例外(または他の例外)をキャッチする場合は、「add()は成功していませんが、ここから正常に処理できますか?」と尋ねてください。私の経験からすれば、大部分の場合、要素を追加することはできません。なぜなら、それがアルゴリズムに必要な要素なので、失敗するか、間違った結果が出るからです。だから、呼び出し元に、あなたの仕事を遂行することができないと言いたいのです。それは、例外をスローすることを意味します。

ローカルのプログラマーの間違いのためにアプリケーション全体が停止しないようにするため、トップレベルのメニュー機能やサービス要求などのラッパーが意味を持ち、すべてのThrowableをキャッチしてロギングし、ユーザに通知して、アプリケーションが次のコマンド/要求を受け入れる状態にする(自動的に行われない場合)。

このように、laziestプログラマーは、不必要なcatch節を決して導入しないため、最も堅牢なコード(例外的に)を生成することがよくあります。

関連する問題