0

ラベルを使用しない (コードを繰り返したり、メソッドを作成しすぎたりしない) ことで、この 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;

これはコード ファッション コンテストの勝者にはなりませんが、少なくとも機能します。回答とコメントをありがとうございます。

4

3 に答える 3

0
void func() {
    Object r;
    Object s;

    if (r == null ) {
        try { 
            some code 1 modifying the value of s; 
            if ( s == null ) {
                some code 3;
                some code 5;
            } 
        } catch (Exception e) {
            some code 2;
            some code 4;
        }
    }   
}
于 2014-08-19T18:29:32.937 に答える
0
try {
    Object data;
    // Processing
    if (data == null) {
        throw new NullPointerException();
    }
} catch (Exception exception) {
    // Unique code
}
于 2014-08-19T18:25:22.290 に答える