Show notes
Exceptional Failure
In this short season, we are going through EXceptional Ruby by Advi Grimm
What is a failure?
Let's talk about some definitions first:
- Exception - the occurrence of an abnormal condition during the execution of a software element.
- Failure - the inability of a software element to satisfy its purpose
- Error - the presence in the software of some element not satisfying its specification
"Failures cause exceptions which are due to errors"
- Failures - methods are thought to be designed to fulfill a contract. when they don't fulfill the contract, they fail
The life-cycle of an exception
- Exceptions are raised with either the
raiseorfailmethods - In Ruby, we signal failures with exceptions
🗣 Discussion: When do you find yourself using raise?
🗣 Discussion: When do you find yourself using rescue?
- The
rescueclause should be a short sequence of simple instructions designed to bring the object back to a stable state and to either retry the operation or terminate with a failure
syntax
Starts with the
rescuekeyword, followed by one or more classes or modules to match, then a hash rocket and the variable name to which the matching exception will be assignedSubsequent lines of code up to an
endkeyword will be executed if therescueis matchedrescue IOError => e
puts "Error while writing to file: #{e.message}"
end
Moar Code
begin raise RuntimeError, 'specific error'rescue StandardError => error puts "Generic error handler: #{error.inspect}"rescue RuntimeError => error puts "runtime error handler: #{error.inspect}"end- Order matters when stacking multiple rescue clauses. the RuntimeError rescue block will never execute!
🗣 Discussion: Have you ever used retry?
tries = 0begin tries += 1 puts "trying #{tries}" raiserescue retry if tries < 3 puts 'I give up'end- Ruby gives you the power to retry
- I can see how this might be useful for making API calls
- Be super careful that your 'giving up' criteria will eventually be met
- Retry is nice for things that are unreliable
Picks:
JP: Overcast https://overcast.fm/
John: Apple Refurbished



