Listen

Description

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