https://geekblog.net/blog/how-to-catch-exceptions-in-c/