https://medium.com/@tunahan.ali.ozturk/understanding-exceptions-and-exception-handling-in-net-946488d9a3d6