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

Crash Fast & Furious