LoginSignup
8
12

More than 5 years have passed since last update.

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

Posted at

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

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));
8
12
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
12