iteration

Designing for Failures

Episode Summary

This week we talk about failure flags and benign values, report failure reporting, and warning as errors.

Episode Notes

Designing for Failures

Failure flags and benign values

The system might replace the erroneous value with a phony value that it knows to have a benign effect on the rest of the system

When the system's success doesn't depend on the outcome of the method in question, using a benign value may be the right choice. Benign values are also helpful in making the code more testable.

Example:

begin
  response = HTTP.get_response(url)
  JSON.parse(response.body)
rescue Net::HTTPError
  { 'stock_quote' => '' }
end

Warning as errors

Check out this hack:

module Kernel
  def warn(message)
    raise message
  end
end

warn 'uh oh'

Remote failure reporting

Circuit breaker pattern

Ending the program

Picks

John: User Onboard - https://www.useronboard.com/ by https://twitter.com/samuelhulick 

JP: singlediv.com - https://twitter.com/samuelhulick