« 笑っちゃうくらい厚手の衣 | トップページ | ぼくとわたしの7つのルール »

予期しない例外を丸ごと端末に送る

 アプリに例外が発生した場合、エミュだとコンソールに例外情報が送られますが、実機だとそのままでは送られません。ので、送るようにする方法。
 まず、準備として、以下のことをします。これで最低限端末に例外情報が送られます。


  • ADFのappTraceに"on"と書く(リリース時に外す)
  • 例外時、Exception#toString()を標準出力に出す(System.out.println()等)。printStackTrace()では端末に送られない

 さて、端末でデバッグするときは、全ての”予期せぬ”例外を端末に送って欲しいわけです。なぜなら端末の機種依存で落ちることもあるからです。その瞬間の例外をキャッチできなければ、真実は闇の中です。
 全ての例外を余すことなくcatchするため、独立して動くメソッド(イベントとか)やメインループのメソッドは丸ごとtry/catchで囲みましょう。これでそのメソッドから呼ばれるメソッドで起こる例外は全部catchできるはずです。その後エラー画面を出してあげると親切かもしれません(エラー画面の中でトレース情報を表示できれば、appTraceはいらないかもしれません)。
 次に、try/catch節で囲まなければならない処理を持つメソッドはcatch節の最後でthrowしてしまいましょう。このとき、そのメソッドの宣言にthrowsをつけるのを忘れずに。catchで例外処理をしないのであれば、throws宣言をすれば、try/catchは要りません。
 try/catch節が特に必要ないメソッドはそのままでOKです。例外が発生したら、呼び元に自動的に例外を投げてくれます。

|

« 笑っちゃうくらい厚手の衣 | トップページ | ぼくとわたしの7つのルール »

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/19762/739372

この記事へのトラックバック一覧です: 予期しない例外を丸ごと端末に送る:

« 笑っちゃうくらい厚手の衣 | トップページ | ぼくとわたしの7つのルール »