> For the complete documentation index, see [llms.txt](https://ploegert.gitbook.io/til/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://ploegert.gitbook.io/til/programmy/rails/rescue-from-with-a-separate-method.md).

# Rescue From With A Separate Method

In an earlier post on [`rescue_from`](https://github.com/ploegert/til/blob/master/programmy/rails/rescue_from.md), I showed how you can write an exception handler with a block argument.

If instead you'd prefer to implement the exception handler as a separate method, you can do that by passing [`rescue_from`](http://api.rubyonrails.org/classes/ActiveSupport/Rescuable/ClassMethods.html) a `with` keyword argument. This too will behave as a catch-all for a particular exception raised in your controller.

Here is what that can look like:

```ruby
class ApplicationController < ActionController::Base
  rescue_from User::NotAuthorized, with: :handle_unauthorized_user

  def index
    # ...
  end

  private

  def handle_unauthorized_user(exception)
    # respond with some Not Authorized page
  end
end
```

If the `User::NotAuthorized` exception bubbles up to the `rescue_from`, then it will hand that exception off to the `handle_unauthorized_user` method. We can include whatever logic and monitoring we want here and then render an appropriate response.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://ploegert.gitbook.io/til/programmy/rails/rescue-from-with-a-separate-method.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
