AbstractController: Use exception instead of exit for flow control