Providing user-defined error types recipe in Chapter 6, Handling Errors Returning abstract types recipe in Chapter 10, Using Experimental Nightly Features