eclipse 黄色い警告(finally ブロックが正常に完了しない)、finally で return 文を使用することは推奨されません。
eclipseで次のコードを書くと、eclipseは黄色の警告を出します: finallyブロックは正常に完了しません。
public class Test
{
public static void main(String[] args)
{
System.out.println(m1(null));
}
public static String m1(String name)
{
try
{
name.length();
}
finally
{
return name + "_test";
}
}
}
このコードは、コンソールにnull_testと表示され、ヌルポインター例外(これはJVMに飲み込まれる)を投げないという結果で実行されます。プログラムは許容された例外を投げますが、それはJVMによって個人的に飲み込まれ、これは明らかに悪い習慣です。最終ブロックの中でreturnステートメントを使うことが推奨されない理由は、以下の通りです。
1. finallyブロックのreturn文は、直前のreturn文(tryブロックやcatchブロックのreturn文)を上書きするため、メソッドの戻り結果を判断しにくく、間違った結論を導きやすくなります。
2. finally ブロックに return 文が含まれている場合、直前の try または catch ブロックで例外がスローされても、メソッドを呼び出すステートメントは catch ブロックで再スローされた例外を取得せずに finally ブロックの戻り値を取得し、例外をキャッチしないようにすることができます。
つまり、finalの中でreturnを使用することは、プログラミング上良くない行為であり、避けるべきことです。try-catch-finallyでreturnを使用した場合の戻り値について、詳しくは以下をご覧ください。
http://www.cnblogs.com/aigongsi/archive/2012/04/19/2457735.html
このブログでは、様々なケースを列挙し、詳細に分析しています。経験豊富なプログラマーでも、信じられないかもしれませんが、メソッドの戻り値の判断を誤ることがあります。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
ハートビート・エフェクトのためのHTML+CSS
-
HTML ホテル フォームによるフィルタリング
-
HTML+cssのボックスモデル例(円、半円など)「border-radius」使いやすい
-
HTMLテーブルのテーブル分割とマージ(colspan, rowspan)
-
ランダム・ネームドロッパーを実装するためのhtmlサンプルコード
-
Html階層型ボックスシャドウ効果サンプルコード
-
QQの一時的なダイアログボックスをポップアップし、友人を追加せずにオンラインで話す効果を達成する方法
-
sublime / vscodeショートカットHTMLコード生成の実装
-
HTMLページを縮小した後にスクロールバーを表示するサンプルコード
-
html のリストボックス、テキストフィールド、ファイルフィールドのコード例