limitusus’s diary

主に技術のことを書きます

例外処理

昨日から例外が起きたときにブラウザ上には多くの情報を出さず、コンソール側にはバックトレースを出したいと思って悩んでいたのを解決。

def raise_test
    begin
        raise Exception, "Exception!"
    rescue Exception => mes
        Ramaze::Log.warn(mes.message + " For Console")
        Ramaze::Log.warn(mes.backtrace.join("\n"))
        mes.message + " For Browser"
    end
end

mesはStringだと思っていたのだが、この場合mesはExceptionのオブジェクトらしい。
messageで文字列・backtraceでバックトレースが取れる。

これをRamaze::Controllerのサブクラスに置いておけば、ブラウザではException! For Browserと表示・コンソールにはException! For Consoleとバックトレースが表示される。

今のところwarnにしてあるが、ramazeのfaqによるとinfoやdebugも使えるらしい。errorもあったかな。