Use custom exceptions for the various layers.