# Halt!

Sometimes we don't want a request to continue executing; maybe an error has occurred or perhaps an operation is taking too long and we would like to abort the execution of the request. Amber provides a `halt!` method to controllers.

When you want a request to cease and return a particular message rather then rendering a page, you use Amber `halt!` to stop the request from continue execution.

```crystal
class UserController < ApplicationController
  def index
    halt!(403, "Forbidden") if params[:user_id].nil?
    render "index.slang"
  end
end
```

A status code of `403` was returned, and the content in `render` will not be delivered to the client.

The next time you’re building an Amber application, consider using halt to simplify error handling.

## Halt! and redirect\_to

Unlike other frameworks Amber `redirect_to` stops the current execution of the request and performs the redirection at that given time.

For example, in other frameworks you will have to do something similar to:

```crystal
class UserController < ApplicationController
  def index
    if some_condition
        if some_condition
            redirect_to(path_one) and return
            # Or another approach
            return redirect_to(path_one)
        end
    end
  end
end
```

As you probably noticed there is an explicit return, this explicit return is something that is not needed with Amber. Since `redirect_to` uses the `halt!` method in the background.