http://fullstackprep.dev/articles/webd/csharp/exception-handling-in-csharp