揉み消すのではなくて、解決がしたい!Bugsnagで!
「スピード感が大事」という錦の御旗を掲げ、実行中の例外を揉み消すという後ろめたい行為をしているAndroidアプリ開発者の方は少なくないはずです。もちろんそういったアプローチの妥当性の是非についてここで僕が改めて言及しなくても、各人の胸の奥深くで力強く輝くAndroiderな魂が「本当に大切なこととは何か?」と常にみなさんへ問いかけてくれていることでしょう。 (まー、問いかけられてもね。目の前に広がる光景が焼け野原的な絶望風景だったら「これが現実じゃん。夢とか語ってもガキなだけじゃん」って開き直っちゃうだけなんですけどね)
例外を、揉み消すのではなくて解決がしたい
そう!揉み消すのではなくて、解決したい! 解決したい!解決したい!
ならば、自前の例外クラスだ!
printStackTrace
をオーバーライドしてサーバーにスタックトレース投げるぜ!
・・・
わかる! わかる!スタックトレースを受け止める対向サーバとか諸々用意するのがねー! 想像しただけで、胸の奥深くにあるAndroiderな魂の輝きがヒューン!って失せちゃうよねー! でもなー解決したいなー。
そう!そこで!Bugsnagですよ!
Bugsnagはアプリケーションで発生した例外の検知・診断をお手軽にサポートするサービスだよ! 例外やエラー情報を良い感じにまとめて整理した上で開発者に通知してくれるのです。
一昨日くらいの公式ブログでも発表がありましたが、フィルタリングや分析機能が強化されてだいぶ使い易くなっています。
で、このBugsnagを使ってですね僕的には、こんな感じでもみ消しちゃってるのを
public void clash1() { try { throw new MisyounException1("みんな元気!?こちらは相変わらずだよ!"); }catch (Exception e) { e.printStackTrace(); } }
こうだ!
try { throw new MisyounException1("みんな元気!?こちらは相変わらずだよ!"); }catch (Exception e) { Bugsnag.notify(e); }
これで、Bugsnagに例外が飛ぶ!(もちろんクラッシュもしない) そして、Bugsnagに飛ばした例外はこんな感じでまとめられちゃいます。
あとは例外ごとにissueを立て、修正状況を逐一管理していくことができるわけですね。(もちろんBugsnag内でできます) あー、なんてわかり易くて建設的な解決アプローチ!
よし!e.printStackTrace();
をBugsnag.notify(e);
へ一気呵成に置換だ!
e.printStackTrace();
がない場合は、温かみのある手作業だ!
Bugsnagは最初の30日間が無料だし、有料になったとしてもミニマムプランで30ドル/monthというお手軽価格なので、結構気軽に導入できそう!