ラベルを使用しない (コードを繰り返したり、メソッドを作成しすぎたりしない) ことで、この Java コードを改善することはできますか?
void func() {
Object r;
Object s;
if (r == null ) {
try { some code 1 modifying the value of s; }
catch (Exception e) {
some code 2;
break lab1;
}
if ( s == null ) {
some code 3;
break lab2
}
}
lab1:
some code 4;
lab2:
some code 5;
}
編集:
break
/の使い方を間違えましたlabel
。私はそれらをgoto
(code afterlab1
は if の場合にも実行する必要がありますr!=null
。これは目的ではありません。ブレークはラベルを前方に参照できないため、そのようなコードはコンパイルできませんgoto
。Java には同等のもの (どこにでも分岐できるステートメント)がないことを理解しています)。 .
Exception1
外側if
を強制的に終了させるカスタムを使用してコードを記述しました。
try {
if (r!=null) {
throws new Exception1();
}
try { some code 1; }
catch (Exception e1) {
some code 2;
throws new Exception1();
}
if (s == null) {
some code 3;
}
}
catch (Exception1 e2) { some code 4; }
some code 5;
これはコード ファッション コンテストの勝者にはなりませんが、少なくとも機能します。回答とコメントをありがとうございます。