JAVA.CTOR.EXCEPT

コンストラクターが例外をスローすることに注意する

脆弱性とリスク

例外をスローするコンストラクターによってオブジェクトが部分的に初期化され、その結果、後で予期せぬ結果につながる可能性があります。

軽減と防止

コンストラクターでの例外の使用を制限するか、または例外が適切に処理されるようにしてください。

脆弱コード例

コピー
package com.klocwork;

import java.io.IOException;

public class JAVA_CTOR_EXCEPT_POSITIVE {
    public JAVA_CTOR_EXCEPT_POSITIVE(boolean check) throws IOException {
        if (check) {
            System.out.println("hello world");
        } else {
            throw new IOException("...");
        }        
    }
}

修正コード例

コピー
package com.klocwork;

public class JAVA_CTOR_EXCEPT_NEGATIVE {
    public JAVA_CTOR_EXCEPT_NEGATIVE() {
        System.out.println("hello world");
    }
}

外部参考資料