uszanowanko programowanko #3 - expect the unexpected - krótka prezentacja o obsłudze wyjątków...
TRANSCRIPT
![Page 2: Uszanowanko Programowanko #3 - Expect the unexpected - krótka prezentacja o obsłudze wyjątków w języku Ruby](https://reader030.vdocument.in/reader030/viewer/2022032714/55ab41651a28ab70728b4690/html5/thumbnails/2.jpg)
What will we talk about?
How does Ruby exception mechanism actually work?
![Page 3: Uszanowanko Programowanko #3 - Expect the unexpected - krótka prezentacja o obsłudze wyjątków w języku Ruby](https://reader030.vdocument.in/reader030/viewer/2022032714/55ab41651a28ab70728b4690/html5/thumbnails/3.jpg)
What will we talk about?
How does Ruby exception mechanism actually work?
How can we use it?
![Page 4: Uszanowanko Programowanko #3 - Expect the unexpected - krótka prezentacja o obsłudze wyjątków w języku Ruby](https://reader030.vdocument.in/reader030/viewer/2022032714/55ab41651a28ab70728b4690/html5/thumbnails/4.jpg)
What will we talk about?
How does Ruby exception mechanism actually work?
How can we use it?
How should we use it?
![Page 5: Uszanowanko Programowanko #3 - Expect the unexpected - krótka prezentacja o obsłudze wyjątków w języku Ruby](https://reader030.vdocument.in/reader030/viewer/2022032714/55ab41651a28ab70728b4690/html5/thumbnails/5.jpg)
In other words
![Page 6: Uszanowanko Programowanko #3 - Expect the unexpected - krótka prezentacja o obsłudze wyjątków w języku Ruby](https://reader030.vdocument.in/reader030/viewer/2022032714/55ab41651a28ab70728b4690/html5/thumbnails/6.jpg)
What to throw?
![Page 7: Uszanowanko Programowanko #3 - Expect the unexpected - krótka prezentacja o obsłudze wyjątków w języku Ruby](https://reader030.vdocument.in/reader030/viewer/2022032714/55ab41651a28ab70728b4690/html5/thumbnails/7.jpg)
How to throw?
![Page 8: Uszanowanko Programowanko #3 - Expect the unexpected - krótka prezentacja o obsłudze wyjątków w języku Ruby](https://reader030.vdocument.in/reader030/viewer/2022032714/55ab41651a28ab70728b4690/html5/thumbnails/8.jpg)
How not to throw
![Page 9: Uszanowanko Programowanko #3 - Expect the unexpected - krótka prezentacja o obsłudze wyjątków w języku Ruby](https://reader030.vdocument.in/reader030/viewer/2022032714/55ab41651a28ab70728b4690/html5/thumbnails/9.jpg)
When to throw?And finally…
![Page 10: Uszanowanko Programowanko #3 - Expect the unexpected - krótka prezentacja o obsłudze wyjątków w języku Ruby](https://reader030.vdocument.in/reader030/viewer/2022032714/55ab41651a28ab70728b4690/html5/thumbnails/10.jpg)
Ok. Let’s get serious
![Page 11: Uszanowanko Programowanko #3 - Expect the unexpected - krótka prezentacja o obsłudze wyjątków w języku Ruby](https://reader030.vdocument.in/reader030/viewer/2022032714/55ab41651a28ab70728b4690/html5/thumbnails/11.jpg)
Ok. Let’s get serious
![Page 12: Uszanowanko Programowanko #3 - Expect the unexpected - krótka prezentacja o obsłudze wyjątków w języku Ruby](https://reader030.vdocument.in/reader030/viewer/2022032714/55ab41651a28ab70728b4690/html5/thumbnails/12.jpg)
When we fail?“When a method's preconditions are met, but it is unable to either deliver on its promised postconditions, or to maintain the object invariant, then it is in breach of its contract; it has failed.”
![Page 13: Uszanowanko Programowanko #3 - Expect the unexpected - krótka prezentacja o obsłudze wyjątków w języku Ruby](https://reader030.vdocument.in/reader030/viewer/2022032714/55ab41651a28ab70728b4690/html5/thumbnails/13.jpg)
So… here comes exceptions
![Page 14: Uszanowanko Programowanko #3 - Expect the unexpected - krótka prezentacja o obsłudze wyjątków w języku Ruby](https://reader030.vdocument.in/reader030/viewer/2022032714/55ab41651a28ab70728b4690/html5/thumbnails/14.jpg)
RAISE
![Page 15: Uszanowanko Programowanko #3 - Expect the unexpected - krótka prezentacja o obsłudze wyjątków w języku Ruby](https://reader030.vdocument.in/reader030/viewer/2022032714/55ab41651a28ab70728b4690/html5/thumbnails/15.jpg)
RAISEor fail
![Page 16: Uszanowanko Programowanko #3 - Expect the unexpected - krótka prezentacja o obsłudze wyjątków w języku Ruby](https://reader030.vdocument.in/reader030/viewer/2022032714/55ab41651a28ab70728b4690/html5/thumbnails/16.jpg)
![Page 17: Uszanowanko Programowanko #3 - Expect the unexpected - krótka prezentacja o obsłudze wyjątków w języku Ruby](https://reader030.vdocument.in/reader030/viewer/2022032714/55ab41651a28ab70728b4690/html5/thumbnails/17.jpg)
Call #exception to get the exception object.
Set the backtrace. (#set_backtrace)
Set the global exception variable ($!)
Throw the exception object up the call stack.
![Page 18: Uszanowanko Programowanko #3 - Expect the unexpected - krótka prezentacja o obsłudze wyjątków w języku Ruby](https://reader030.vdocument.in/reader030/viewer/2022032714/55ab41651a28ab70728b4690/html5/thumbnails/18.jpg)
![Page 19: Uszanowanko Programowanko #3 - Expect the unexpected - krótka prezentacja o obsłudze wyjątków w języku Ruby](https://reader030.vdocument.in/reader030/viewer/2022032714/55ab41651a28ab70728b4690/html5/thumbnails/19.jpg)
The exception has been thrown. What now?
![Page 20: Uszanowanko Programowanko #3 - Expect the unexpected - krótka prezentacja o obsłudze wyjątków w języku Ruby](https://reader030.vdocument.in/reader030/viewer/2022032714/55ab41651a28ab70728b4690/html5/thumbnails/20.jpg)
Rescueto the rescue!
![Page 21: Uszanowanko Programowanko #3 - Expect the unexpected - krótka prezentacja o obsłudze wyjątków w języku Ruby](https://reader030.vdocument.in/reader030/viewer/2022032714/55ab41651a28ab70728b4690/html5/thumbnails/21.jpg)
![Page 22: Uszanowanko Programowanko #3 - Expect the unexpected - krótka prezentacja o obsłudze wyjątków w języku Ruby](https://reader030.vdocument.in/reader030/viewer/2022032714/55ab41651a28ab70728b4690/html5/thumbnails/22.jpg)
![Page 23: Uszanowanko Programowanko #3 - Expect the unexpected - krótka prezentacja o obsłudze wyjątków w języku Ruby](https://reader030.vdocument.in/reader030/viewer/2022032714/55ab41651a28ab70728b4690/html5/thumbnails/23.jpg)
Be careful not to ensure ‘return`
![Page 24: Uszanowanko Programowanko #3 - Expect the unexpected - krótka prezentacja o obsłudze wyjątków w języku Ruby](https://reader030.vdocument.in/reader030/viewer/2022032714/55ab41651a28ab70728b4690/html5/thumbnails/24.jpg)
Did you know…
![Page 25: Uszanowanko Programowanko #3 - Expect the unexpected - krótka prezentacja o obsłudze wyjątków w języku Ruby](https://reader030.vdocument.in/reader030/viewer/2022032714/55ab41651a28ab70728b4690/html5/thumbnails/25.jpg)
Did you know…that in Ruby…
![Page 26: Uszanowanko Programowanko #3 - Expect the unexpected - krótka prezentacja o obsłudze wyjątków w języku Ruby](https://reader030.vdocument.in/reader030/viewer/2022032714/55ab41651a28ab70728b4690/html5/thumbnails/26.jpg)
Did you know…that in Ruby…
we have ‘retry’?!
#shock #niedowierzanie
![Page 27: Uszanowanko Programowanko #3 - Expect the unexpected - krótka prezentacja o obsłudze wyjątków w języku Ruby](https://reader030.vdocument.in/reader030/viewer/2022032714/55ab41651a28ab70728b4690/html5/thumbnails/27.jpg)
![Page 28: Uszanowanko Programowanko #3 - Expect the unexpected - krótka prezentacja o obsłudze wyjątków w języku Ruby](https://reader030.vdocument.in/reader030/viewer/2022032714/55ab41651a28ab70728b4690/html5/thumbnails/28.jpg)
re-raising
![Page 29: Uszanowanko Programowanko #3 - Expect the unexpected - krótka prezentacja o obsłudze wyjątków w języku Ruby](https://reader030.vdocument.in/reader030/viewer/2022032714/55ab41651a28ab70728b4690/html5/thumbnails/29.jpg)
re-raising
![Page 30: Uszanowanko Programowanko #3 - Expect the unexpected - krótka prezentacja o obsłudze wyjątków w języku Ruby](https://reader030.vdocument.in/reader030/viewer/2022032714/55ab41651a28ab70728b4690/html5/thumbnails/30.jpg)
STORY TIME!
![Page 31: Uszanowanko Programowanko #3 - Expect the unexpected - krótka prezentacja o obsłudze wyjątków w języku Ruby](https://reader030.vdocument.in/reader030/viewer/2022032714/55ab41651a28ab70728b4690/html5/thumbnails/31.jpg)
STORY TIME!
![Page 32: Uszanowanko Programowanko #3 - Expect the unexpected - krótka prezentacja o obsłudze wyjątków w języku Ruby](https://reader030.vdocument.in/reader030/viewer/2022032714/55ab41651a28ab70728b4690/html5/thumbnails/32.jpg)
What to do?When dealing with external service/process catch all and log
CircuitBreaker (there’s a gem)
Just exit
![Page 33: Uszanowanko Programowanko #3 - Expect the unexpected - krótka prezentacja o obsłudze wyjątków w języku Ruby](https://reader030.vdocument.in/reader030/viewer/2022032714/55ab41651a28ab70728b4690/html5/thumbnails/33.jpg)
Expect only unexpected!
…ask yourself, 'Will this code still run if I remove all the exception handlers?" If the answer is "no", then maybe exceptions are being used in non-exceptional circumstances.
![Page 34: Uszanowanko Programowanko #3 - Expect the unexpected - krótka prezentacja o obsłudze wyjątków w języku Ruby](https://reader030.vdocument.in/reader030/viewer/2022032714/55ab41651a28ab70728b4690/html5/thumbnails/34.jpg)
Need to jump up the stack?
Don’t use exceptions
![Page 35: Uszanowanko Programowanko #3 - Expect the unexpected - krótka prezentacja o obsłudze wyjątków w języku Ruby](https://reader030.vdocument.in/reader030/viewer/2022032714/55ab41651a28ab70728b4690/html5/thumbnails/35.jpg)
Your answer is -throw… catch
![Page 36: Uszanowanko Programowanko #3 - Expect the unexpected - krótka prezentacja o obsłudze wyjątków w języku Ruby](https://reader030.vdocument.in/reader030/viewer/2022032714/55ab41651a28ab70728b4690/html5/thumbnails/36.jpg)
![Page 37: Uszanowanko Programowanko #3 - Expect the unexpected - krótka prezentacja o obsłudze wyjątków w języku Ruby](https://reader030.vdocument.in/reader030/viewer/2022032714/55ab41651a28ab70728b4690/html5/thumbnails/37.jpg)
Ok! ok! I am nearly finished!
![Page 38: Uszanowanko Programowanko #3 - Expect the unexpected - krótka prezentacja o obsłudze wyjątków w języku Ruby](https://reader030.vdocument.in/reader030/viewer/2022032714/55ab41651a28ab70728b4690/html5/thumbnails/38.jpg)
My errors
![Page 39: Uszanowanko Programowanko #3 - Expect the unexpected - krótka prezentacja o obsłudze wyjątków w języku Ruby](https://reader030.vdocument.in/reader030/viewer/2022032714/55ab41651a28ab70728b4690/html5/thumbnails/39.jpg)
Your interest zone
![Page 40: Uszanowanko Programowanko #3 - Expect the unexpected - krótka prezentacja o obsłudze wyjątków w języku Ruby](https://reader030.vdocument.in/reader030/viewer/2022032714/55ab41651a28ab70728b4690/html5/thumbnails/40.jpg)
Where to find more?
“Exceptional Ruby” - Avdi Grimm - Base for this short talk
"Object Oriented Software Construction” - Bertrand Meyer