error handling best practices

Explanation, examples and best practices for error handling in Scala