exception handling is something that the client should do