Structurally, exception, failure_message, and status_code are mutually exclusive in how this function is called, and it's best for the function's flow to represent that.