Crash Fast &
Furious
Pierre-Yves Ricau, Square
Source: https://t.co/uH1EqxqAow
1
2
1
2
3
1
2
3
4
1
2
public void uncaughtException(Thread t, Throwable e) { bugsnagClient.notify(e, Severity.ERROR); originalHandler.uncaughtException(t, e); }
private void notify(Throwable exception, Severity severity) { final Error error = new Error(config, exception); error.setSeverity(severity); captureState(error); Async.run(new Runnable() { @Override public void run() { deliver(error); } }); }
Crashs natifs
1
2
Reproduire
1
2
3
4
Infos statiques
1
2
3
Rolling log
1
2
squ.re/leakcanary
Defensive programming
Offensive programming Crash Fast
2
1
Exception Grouping
1
2
@Test public void submitTipSuccess() { withRobot(SalesHistoryScreenRobot.class) // .selectFirstBillAwaitingTipWithAmount(500_00L) // .enterCustomTip("100") // .clickSettleCustomTip() // .checkSettleTipButtonConfirmAmount("$501.00") // .clickSettleCustomTip(); }
Dogfood / Beta
Staged Rollout
• Process process process • Repro repro repro • Crash Fast & Furious
@Piwai