exit moved to addMessage so error_handler will get the same behaviour as error()