[解決済み] 構文を満足させるために return 文を持つことは悪い習慣か?
2023-07-14 13:16:10
質問
以下のコードを考えてみましょう。
public Object getClone(Cloneable a) throws TotallyFooException {
if (a == null) {
throw new TotallyFooException();
}
else {
try {
return a.clone();
} catch (CloneNotSupportedException e) {
e.printStackTrace();
}
}
//cant be reached, in for syntax
return null;
}
は
return null;
は例外が発生する可能性があるため必要ですが、そのような場合、すでにnullかどうかをチェックしているため(そして、呼び出しているクラスがクローンをサポートしていることを知っていると仮定します)、try文は決して失敗しないことが分かっています。
構文を満たし、コンパイル エラーを回避するために、最後に余分な return 文を入れることは悪い習慣でしょうか (到達しないことを説明するコメント付き)。または、余分な return 文が不要になるようにこのようなものをコーディングする良い方法があるのでしょうか?
どのように解決するのですか?
余計なreturn文がない分、わかりやすい方法は以下の通りです。私なら
CloneNotSupportedException
もキャッチせず、呼び出し元へ渡すようにします。
if (a != null) {
try {
return a.clone();
} catch (CloneNotSupportedException e) {
e.printStackTrace();
}
}
throw new TotallyFooException();
順番をいじって、最初に持っているものよりももっとわかりやすい構文にすることは、ほとんど可能です。
関連
-
mvn' は、内部または外部のコマンド、操作可能なプログラムまたはバッチファイルとして認識されません。
-
アノテーション「@Retention」の役割
-
Junitのユニットテストエラー
-
春ブート複数のデータソースの管理(atomikos)同じサーバーホスト上の複数のプロジェクトを開始する複数のJava - jarのエラーソリューション
-
CAS 5.1.8でhttpをサポートし、認証されていない認可サービスエラーのプロンプトが表示される問題を解決した。
-
WeChat小プログラム Bluetooth通信 Bluetoothモジュールデモ
-
[解決済み] Java の import 文でワイルドカードを使用することは、なぜ悪いのですか?
-
[解決済み] System.gc()を呼び出すのはなぜ悪い習慣なのですか?
-
[解決済み】なぜ "except: pass "は悪いプログラミング手法なのか?
-
[解決済み】セッターが "this "を返すのはバッドプラクティスか?
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
型に解決できない エラー解決
-
StringBuilderが投げるArrayIndexOutOfBoundsExceptionの探索
-
Uncaught ReferenceError: は定義されていません。
-
java マイクロソフト払い戻し予期せぬサーバーからのファイルの終了
-
keytool error: java.io.FileNotFoundException: cacerts (アクセス拒否されました。)
-
maven レポート エラー 解決不可能な親POM
-
JDK8 の Optional.of と Optional.ofNullable メソッドの違いと使い方を説明する。
-
JNIエンカウンターエラー:構造体またはユニオンではない何かでメンバー 'FindClass' のリクエスト
-
Java Runtime Environmentを継続するためのメモリが不足しています。
-
Java基礎 - マッピングとQ/A