Android

特定の条件で Android アプリをクラッシュさせたい

More than 1 year has passed since last update.

ログにエラーを出していても気が付かないことがあったので、特定の条件でクラッシュさせて、バグに気がつきやすくしたかった。


Java の assert を使うこと

まずはじめに考えるのはこれでしょう。

assert object != null : "object が null だぞ!!"

と本家の Java ならこれで条件を満たすと AssertionError が throw されるが、Android ではこれが機能しないようだ。


何も考えず適当に RuntimeException を throw する

ただ throw するだけ。誰も catch しなければクラッシュしてくれる

throw new RuntimeException();

これでも十分機能するが RxJava などを使っているとライブラリの中で一旦 catch しているので、これではうまくいかない。


デフォルトのエラーハンドラを直接呼び出す

これが正解。デフォルトの例外ハンドラにはアプリをクラッシュさせるためのコードが含まれているようで、これを直接呼び出すと、いつものクラッシュしたときのダイアログとともに落ちてくれた。素晴らしい。

Thread.currentThread().getUncaughtExceptionHandler().uncaughtException(Thread.currentThread(), new IllegalStateException(e));