https://chuckconway.com/posts/considerations-when-throwing-exceptions/