Assert остановит любой поток, выдавший утверждение, при условии, что ошибка AssertionError не перехвачена. Хотя я думаю, что убийства этого потока будет достаточно, и вы не захотите убивать всю программу. В любом случае, чтобы фактически убить всю программу, просто оберните ваши запускаемые файлы
try {
} catch (AssertionError e) {
System.exit(1);
}
, которая убьет программу при поднятии утверждения.
Таким образом, вы можете сделать «CrashOnAssertionError» работоспособным, чтобы обернуть все ваши запускаемые объекты:
public class CrashOnAssertionError implements Runnable {
private final Runnable mActualRunnable;
public CrashOnAssertionError(Runnable pActualRunnable) {
mActualRunnable = pActualRunnable;
}
public void run() {
try {
mActualRunnable.run();
} catch (AssertionError) {
System.exit(1);
}
}
}
И тогда вы можете сделать что-то вроде:
Runnable r = new CrashOnAssertionError(
new Runnable() {
public void run() {
// do stuff
}
});
new Thread(r).start();