http://fullstackprep.dev/Articles/webd/csharp/best-practices-exception-handling