# Прихващане на грешки

Когато сървлет генерира грешка, уеб контейнера търси в конфигурационния файл (web.xml) декларацията на този тип грешка. Необходимо е да има деклариран error-page елемент, който да окаже кой сървлет да бъде извикан в отговор на настъпила грешка.

Например, ако при различните видове грешки се изисква извикването на един и същи сървлет, това се постига със следната web.xml конфигурация:

```
<!-- servlet definition -->
<servlet>
    <servlet-name>ErrorHandler</servlet-name>
    <servlet-class>ErrorHandler</servlet-class>
</servlet>
<!-- servlet mappings -->
<servlet-mapping>
    <servlet-name>ErrorHandler</servlet-name>
    <url-pattern>/ErrorHandler</url-pattern>
</servlet-mapping>
<!-- error-code related error pages -->
<error-page>
    <error-code>404</error-code>
    <location>/ErrorHandler</location>
</error-page>
<error-page>
    <error-code>403</error-code>
    <location>/ErrorHandler</location>
</error-page>
<!-- exception-type related error pages -->
<error-page>
    <exception-type>
        javax.servlet.ServletException
    </exception-type>
    <location>/ErrorHandler</location>
</error-page>
<error-page>
    <exception-type>java.io.IOException</exception-type>
    <location>/ErrorHandler</location>
</error-page>
```

Ако се изисква по общо решение с не толкова подробно описание, то може да се използва следната декларация:

```
<error-page>
    <exception-type>java.lang.Throwable</exception-type>
    <location>/ErrorHandler</location>
</error-page>
```

| Атрибути на заявката                 | значение                                          | Тип данни             |
| ------------------------------------ | ------------------------------------------------- | --------------------- |
| `javax.servlet.error.status_code`    | дава статус код                                   | `java.lang.Integer`;  |
| `javax.servlet.error.exception_type` | дава информация за вид изключение                 | `java.lang.Class`;    |
| `javax.servlet.error.message`        | дава информация за точното съобщение за грешка    | `java.lang.String`    |
| `javax.servlet.error.request_uri`    | дава информация за URL-то, което извиква сървлета | `java.lang.String`    |
| `javax.servlet.error.exception`      | дава информация за полученото изключение          | `java.lang.Throwable` |
| `javax.servlet.error.servlet_name`   | дава името на сървлет                             | `java.lang.String`    |


---

# Agent Instructions: 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://programmingfundamental.gitbook.io/programmingwithjava/internet-tekhnologii/laboratorno-uprazhnenie-10/prikhvashane-na-greshki.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.
