9

私はこの構造を持ついくつかのコードを持っています:

public void method() {
    Object o;
    try {
        o = new Object();
    } catch (Exception e) {
        //Processing, several lines
        throw new Error(); //Our own unchecked exception
    }
    doSomething(o);
}

catch ブロックに同じコードを含むメソッドがかなりあるので、いくつかの行を節約できるようにメソッドに抽出したいと考えています。私の問題は、それを行うと、「ローカル変数 o が初期化されていない可能性がある」というコンパイラ エラーが発生することです。

public void method() {
    Object o;
    try {
        o = new Object();
    } catch (Exception e) {
        handleError();
    }
    //doSomething(o); compiler error
}


private void handleError() throws Error {
    //Processing, several lines
    throw new Error();
}

回避策はありますか?

4

6 に答える 6