S_a_k_Uの日記みたいなDB

~サクゥーと呼ばないで~

OutOfMemoryは…

OutOfMemoryで落ちてるっぽいな〜でもエラーログが出てないな〜と思ったら。


OutOfMemoryってExceptionじゃないんだw

java.lang.Object
  +--java.lang.Throwable
        +--java.lang.Error
              +--java.lang.VirtualMachineError
                    +--java.lang.OutOfMemoryError

という構造なのね。


全ての例外(エラー)=Exceptionと思い込んでたorz
さらに、Throwable=インターフェースと思い込んでたOrz
ということで、エラーログを出力するような場合のtry-catchは、

    try {
        (OutOfMemoryErrorが出るような処理)
    } catch (Exception e) {
        (エラーログを出力する処理)
    }

ではなく、

    try {
        (OutOfMemoryErrorが出るような処理)
    } catch (Throwable t) {
        (エラーログを出力する処理)
    }

ってな感じで捕まえんと、ちゃんとエラーログが出力されんことが判明。