## 6.4.4 Mapping to Response Codes

Grails also allows you to map HTTP response codes to controllers, actions or views. All you have to do is use a method name that matches the response code you are interested in:

    static mappings = {
       "403"(controller: "errors", action: "forbidden")
       "404"(controller: "errors", action: "notFound")
       "500"(controller: "errors", action: "serverError")
    }

Or alternatively if you merely want to provide custom error pages:

    static mappings = {
       "403"(view: "/errors/forbidden")
       "404"(view: "/errors/notFound")
       "500"(view: "/errors/serverError")
    }

#### Declarative Error Handling

In addition you can configure handlers for individual exceptions:

    static mappings = {
       "403"(view: "/errors/forbidden")
       "404"(view: "/errors/notFound")
       "500"(controller: "errors", action: "illegalArgument", exception: IllegalArgumentException)
       "500"(controller: "errors", action: "nullPointer", exception: NullPointerException)
       "500"(controller: "errors", action: "customException", exception: MyException)
       "500"(view: "/errors/serverError")
    }

With this configuration, an `IllegalArgumentException` will be handled by the `illegalArgument` action in `ErrorsController`, a `NullPointerException` will be handled by the `nullPointer` action, and a `MyException` will be handled by the `customException` action. Other exceptions will be handled by the catch-all rule and use the `/errors/serverError` view.