--- /dev/null
+# ΠΠ±ΡΠΎΠ±ΠΊΠ° ΠΠΎΠΌΠΈΠ»ΠΎΠΊ
+
+Π Π±Π°Π³Π°ΡΠΎ ΡΠΈΡΡΠ°ΡΡΠΉ, ΠΊΠΎΠ»ΠΈ ΠΏΠΎΡΡΡΠ±Π½ΠΎ ΠΏΠΎΠ²ΡΠ΄ΠΎΠΌΠΈΡΠΈ ΠΊΠ»ΡΡΠ½ΡΠ°, ΡΠΊΠΈΠΉ Π²ΠΈΠΊΠΎΡΠΈΡΡΠΎΠ²ΡΡ ΠΠ°Ρ API, ΠΏΡΠΎ ΠΏΠΎΠΌΠΈΠ»ΠΊΡ.
+
+Π¦ΠΈΠΌ ΠΊΠ»ΡΡΠ½ΡΠΎΠΌ ΠΌΠΎΠΆΠ΅ Π±ΡΡΠΈ Π±ΡΠ°ΡΠ·Π΅Ρ ΡΠ· ΡΡΠΎΠ½ΡΠ΅Π½Π΄ΠΎΠΌ, ΠΊΠΎΠ΄ ΡΠ½ΡΠΎΠ³ΠΎ ΡΠΎΠ·ΡΠΎΠ±Π½ΠΈΠΊΠ°, IoT-ΠΏΡΠΈΡΡΡΡΠΉ ΡΠΎΡΠΎ.
+
+ΠΠΎΠΆΠ»ΠΈΠ²ΠΎ, ΠΠ°ΠΌ ΠΏΠΎΡΡΡΠ±Π½ΠΎ ΠΏΠΎΠ²ΡΠ΄ΠΎΠΌΠΈΡΠΈ ΠΊΠ»ΡΡΠ½ΡΠ°, ΡΠΎ:
+
+* Π£ Π½ΡΠΎΠ³ΠΎ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠ½ΡΠΎ ΠΏΡΠ°Π² Π΄Π»Ρ Π²ΠΈΠΊΠΎΠ½Π°Π½Π½Ρ ΡΡΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΡΡ.
+* ΠΡΠ½ Π½Π΅ ΠΌΠ°Ρ Π΄ΠΎΡΡΡΠΏΡ Π΄ΠΎ ΡΡΠΎΠ³ΠΎ ΡΠ΅ΡΡΡΡΡ.
+* ΠΠ»Π΅ΠΌΠ΅Π½Ρ, Π΄ΠΎ ΡΠΊΠΎΠ³ΠΎ Π²ΡΠ½ Π½Π°ΠΌΠ°Π³Π°ΡΡΡΡΡ ΠΎΡΡΠΈΠΌΠ°ΡΠΈ Π΄ΠΎΡΡΡΠΏ, Π½Π΅ ΡΡΠ½ΡΡ.
+* ΡΠΎΡΠΎ.
+
+Π£ ΡΠ°ΠΊΠΈΡ
Π²ΠΈΠΏΠ°Π΄ΠΊΠ°Ρ
Π·Π°Π·Π²ΠΈΡΠ°ΠΉ ΠΏΠΎΠ²Π΅ΡΡΠ°ΡΡΡΡΡ **HTTP ΡΡΠ°ΡΡΡ-ΠΊΠΎΠ΄** Π² Π΄ΡΠ°ΠΏΠ°Π·ΠΎΠ½Ρ **400** (Π²ΡΠ΄ 400 Π΄ΠΎ 499).
+
+Π¦Π΅ ΡΡ
ΠΎΠΆΠ΅ Π½Π° HTTP ΡΡΠ°ΡΡΡ-ΠΊΠΎΠ΄ΠΈ 200 (Π²ΡΠ΄ 200 Π΄ΠΎ 299). Π¦Ρ "200" ΡΡΠ°ΡΡΡ-ΠΊΠΎΠ΄ΠΈ ΠΎΠ·Π½Π°ΡΠ°ΡΡΡ, ΡΠΎ Π·Π°ΠΏΠΈΡ ΠΏΡΠΎΠΉΡΠΎΠ² ΡΡΠΏΡΡΠ½ΠΎ.
+
+Π‘ΡΠ°ΡΡΡ-ΠΊΠΎΠ΄ΠΈ Π² Π΄ΡΠ°ΠΏΠ°Π·ΠΎΠ½Ρ 400 ΠΎΠ·Π½Π°ΡΠ°ΡΡΡ, ΡΠΎ ΡΡΠ°Π»Π°ΡΡ ΠΏΠΎΠΌΠΈΠ»ΠΊΠ° Π· Π±ΠΎΠΊΡ ΠΊΠ»ΡΡΠ½ΡΠ°.
+
+ΠΠ°ΠΌ'ΡΡΠ°ΡΡΠ΅ Π²ΡΡ ΡΡ ΠΏΠΎΠΌΠΈΠ»ΠΊΠΈ **404 Not Found** (Ρ ΠΆΠ°ΡΡΠΈ ΠΏΡΠΎ Π½ΠΈΡ
)?
+
+## ΠΠΈΠΊΠΎΡΠΈΡΡΠ°Π½Π½Ρ `HTTPException`
+
+Π©ΠΎΠ± ΠΏΠΎΠ²Π΅ΡΠ½ΡΡΠΈ HTTP-Π²ΡΠ΄ΠΏΠΎΠ²ΡΠ΄Ρ Π· ΠΏΠΎΠΌΠΈΠ»ΠΊΠ°ΠΌΠΈ ΠΊΠ»ΡΡΠ½ΡΡ, Π²ΠΈΠΊΠΎΡΠΈΡΡΠΎΠ²ΡΠΉΡΠ΅ `HTTPException`.
+
+### ΠΠΌΠΏΠΎΡΡ `HTTPException`
+
+{* ../../docs_src/handling_errors/tutorial001.py hl[1] *}
+
+### ΠΠΈΠΊΠΎΡΠΈΡΡΠ°Π½Π½Ρ `HTTPException` Ρ ΠΊΠΎΠ΄Ρ
+
+`HTTPException` β ΡΠ΅ Π·Π²ΠΈΡΠ°ΠΉΠ½Π° ΠΏΠΎΠΌΠΈΠ»ΠΊΠ° Python ΡΠ· Π΄ΠΎΠ΄Π°ΡΠΊΠΎΠ²ΠΈΠΌΠΈ Π΄Π°Π½ΠΈΠΌΠΈ, ΡΠΊΡ ΡΡΠΎΡΡΡΡΡΡΡ API.
+
+ΠΡΠΊΡΠ»ΡΠΊΠΈ ΡΠ΅ ΠΏΠΎΠΌΠΈΠ»ΠΊΠ° Python, ΠΠΈ Π½Π΅ `ΠΏΠΎΠ²Π΅ΡΡΠ°ΡΡΠ΅` ΠΉΠΎΠ³ΠΎ, Π° `Π³Π΅Π½Π΅ΡΡΡΡΠ΅` (Π³Π΅Π½Π΅ΡΡΡΡΠ΅ ΠΏΠΎΠΌΠΈΠ»ΠΊΡ).
+
+Π¦Π΅ ΡΠ°ΠΊΠΎΠΆ ΠΎΠ·Π½Π°ΡΠ°Ρ, ΡΠΎ ΡΠΊΡΠΎ ΠΠΈ ΠΏΠ΅ΡΠ΅Π±ΡΠ²Π°ΡΡΠ΅ Π²ΡΠ΅ΡΠ΅Π΄ΠΈΠ½Ρ Π΄ΠΎΠΏΠΎΠΌΡΠΆΠ½ΠΎΡ ΡΡΠ½ΠΊΡΡΡ, ΡΠΊΡ Π²ΠΈΠΊΠ»ΠΈΠΊΠ°ΡΡΠ΅ Π²ΡΠ΅ΡΠ΅Π΄ΠΈΠ½Ρ ΡΠ²ΠΎΡΡ *ΡΡΠ½ΠΊΡΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΡΡ ΡΠ»ΡΡ
Ρ*, Ρ ΡΠ°ΠΌ Π³Π΅Π½Π΅ΡΡΡΡΠ΅ `HTTPException`, Π²ΡΠ΅ΡΠ΅Π΄ΠΈΠ½Ρ ΡΡΡΡ Π΄ΠΎΠΏΠΎΠΌΡΠΆΠ½ΠΎΡ ΡΡΠ½ΠΊΡΡΡ, ΡΠΎ ΡΠ΅ΡΡΠ° ΠΊΠΎΠ΄Ρ Π² *ΡΡΠ½ΠΊΡΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΡΡ ΡΠ»ΡΡ
Ρ* Π½Π΅ Π±ΡΠ΄Π΅ Π²ΠΈΠΊΠΎΠ½Π°Π½Π°. ΠΠ°ΠΏΠΈΡ ΠΎΠ΄ΡΠ°Π·Ρ Π·Π°Π²Π΅ΡΡΠΈΡΡΡΡ, Ρ HTTP-ΠΏΠΎΠΌΠΈΠ»ΠΊΠ° Π· `HTTPException` Π±ΡΠ΄Π΅ Π½Π°Π΄ΡΡΠ»Π°Π½Π° ΠΊΠ»ΡΡΠ½ΡΡ.
+
+ΠΠ΅ΡΠ΅Π²Π°Π³Π° Π²ΠΈΠΊΠΎΡΠΈΡΡΠ°Π½Π½Ρ `Π³Π΅Π½Π΅ΡΠ°ΡΡΡ` (raise) ΠΏΠΎΠΌΠΈΠ»ΠΊΠΈ Π·Π°ΠΌΡΡΡΡ `ΠΏΠΎΠ²Π΅ΡΠ½Π΅Π½Π½Ρ` Π·Π½Π°ΡΠ΅Π½Π½Ρ (return) ΡΡΠ°Π½Π΅ Π±ΡΠ»ΡΡ ΠΎΡΠ΅Π²ΠΈΠ΄Π½ΠΈΠΌ Π² ΡΠΎΠ·Π΄ΡΠ»Ρ ΠΏΡΠΎ ΠΠ°Π»Π΅ΠΆΠ½ΠΎΡΡΡ ΡΠ° ΠΠ΅Π·ΠΏΠ΅ΠΊΡ.
+
+Π£ ΡΡΠΎΠΌΡ ΠΏΡΠΈΠΊΠ»Π°Π΄Ρ, ΡΠΊΡΠΎ ΠΊΠ»ΡΡΠ½Ρ Π·Π°ΠΏΠΈΡΡΡ Π΅Π»Π΅ΠΌΠ΅Π½Ρ Π·Π° ID, ΡΠΊΠΎΠ³ΠΎ Π½Π΅ ΡΡΠ½ΡΡ, Π±ΡΠ΄Π΅ Π·Π³Π΅Π½Π΅ΡΠΎΠ²Π°Π½ΠΎ ΠΏΠΎΠΌΠΈΠ»ΠΊΡ Π·Ρ ΡΡΠ°ΡΡΡ-ΠΊΠΎΠ΄ΠΎΠΌ `404`:
+
+{* ../../docs_src/handling_errors/tutorial001.py hl[11] *}
+
+### ΠΡΡΠΈΠΌΠ°Π½Π° Π²ΡΠ΄ΠΏΠΎΠ²ΡΠ΄Ρ
+
+Π―ΠΊΡΠΎ ΠΊΠ»ΡΡΠ½Ρ ΡΠΎΠ±ΠΈΡΡ Π·Π°ΠΏΠΈΡ Π·Π° ΡΠ»ΡΡ
ΠΎΠΌ `http://example.com/items/foo` (Π΄Π΅ `item_id` `"foo"`), Π²ΡΠ½ ΠΎΡΡΠΈΠΌΠ°Ρ ΡΡΠ°ΡΡΡ-ΠΊΠΎΠ΄ 200 Ρ JSON Π²ΡΠ΄ΠΏΠΎΠ²ΡΠ΄Ρ:
+
+```JSON
+{
+ "item": "The Foo Wrestlers"
+}
+```
+
+ΠΠ»Π΅ ΡΠΊΡΠΎ ΠΊΠ»ΡΡΠ½Ρ ΡΠΎΠ±ΠΈΡΡ Π·Π°ΠΏΠΈΡ Π½Π° `http://example.com/items/bar` (Π΄Π΅ `item_id` ΠΌΠ°Ρ Π½Π΅ ΡΡΠ½ΡΡΡΠ΅ Π·Π½Π°ΡΠ΅Π½Π½Ρ `"bar"`), ΡΠΎ ΠΎΡΡΠΈΠΌΠ°Ρ ΡΡΠ°ΡΡΡ-ΠΊΠΎΠ΄ 404 (ΠΏΠΎΠΌΠΈΠ»ΠΊΠ° "Π½Π΅ Π·Π½Π°ΠΉΠ΄Π΅Π½ΠΎ") ΡΠ° Π²ΡΠ΄ΠΏΠΎΠ²ΡΠ΄Ρ:
+
+```JSON
+{
+ "detail": "Item not found"
+}
+```
+
+/// tip | ΠΠΎΡΠ°Π΄Π°
+
+ΠΡΠ΄ ΡΠ°Ρ Π²ΠΈΠΊΠ»ΠΈΠΊΡ `HTTPException` ΠΠΈ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ Π±ΡΠ΄Ρ-ΡΠΊΠ΅ Π·Π½Π°ΡΠ΅Π½Π½Ρ, ΡΠΊΠ΅ ΠΌΠΎΠΆΠ΅ Π±ΡΡΠΈ ΠΏΠ΅ΡΠ΅ΡΠ²ΠΎΡΠ΅Π½Π΅ Π² JSON, ΡΠΊ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ `detail`, Π° Π½Π΅ Π»ΠΈΡΠ΅ ΡΡΠ΄ΠΎΠΊ (`str`).
+
+ΠΠΈ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ `dict`, `list` ΡΠΎΡΠΎ.
+
+ΠΠΎΠ½ΠΈ ΠΎΠ±ΡΠΎΠ±Π»ΡΡΡΡΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎ Π·Π° Π΄ΠΎΠΏΠΎΠΌΠΎΠ³ΠΎΡ **FastAPI** ΡΠ° ΠΏΠ΅ΡΠ΅ΡΠ²ΠΎΡΡΡΡΡΡΡ Π² JSON.
+
+///
+
+## ΠΠΎΠ΄Π°Π²Π°Π½Π½Ρ Π²Π»Π°ΡΠ½ΠΈΡ
Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΡΠ²
+
+ΠΠ½ΠΎΠ΄Ρ ΠΏΠΎΡΡΡΠ±Π½ΠΎ Π΄ΠΎΠ΄Π°ΡΠΈ Π²Π»Π°ΡΠ½Ρ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ Π΄ΠΎ HTTP-ΠΏΠΎΠΌΠΈΠ»ΠΊΠΈ, Π½Π°ΠΏΡΠΈΠΊΠ»Π°Π΄, Π΄Π»Ρ ΠΏΠ΅Π²Π½ΠΈΡ
ΡΠΈΠΏΡΠ² Π±Π΅Π·ΠΏΠ΅ΠΊΠΈ.
+
+ΠΠΌΠΎΠ²ΡΡΠ½ΠΎ, ΠΠ°ΠΌ Π½Π΅ Π΄ΠΎΠ²Π΅Π΄Π΅ΡΡΡΡ Π²ΠΈΠΊΠΎΡΠΈΡΡΠΎΠ²ΡΠ²Π°ΡΠΈ ΡΠ΅ Π±Π΅Π·ΠΏΠΎΡΠ΅ΡΠ΅Π΄Π½ΡΠΎ Ρ ΡΠ²ΠΎΡΠΌΡ ΠΊΠΎΠ΄Ρ.
+
+ΠΠ»Π΅ ΡΠΊΡΠΎ ΠΠ°ΠΌ Π·Π½Π°Π΄ΠΎΠ±ΠΈΡΡΡΡ ΡΠ΅ Π΄Π»Ρ ΡΠΊΠ»Π°Π΄Π½ΠΎΠ³ΠΎ ΡΡΠ΅Π½Π°ΡΡΡ, ΠΠΈ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄ΠΎΠ΄Π°ΡΠΈ Π²Π»Π°ΡΠ½Ρ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ:
+
+{* ../../docs_src/handling_errors/tutorial002.py hl[14] *}
+
+## ΠΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π½Ρ Π²Π»Π°ΡΠ½ΠΈΡ
ΠΎΠ±ΡΠΎΠ±Π½ΠΈΠΊΡΠ² ΠΏΠΎΠΌΠΈΠ»ΠΎΠΊ
+
+ΠΠΈ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄ΠΎΠ΄Π°ΡΠΈ Π²Π»Π°ΡΠ½Ρ ΠΎΠ±ΡΠΎΠ±Π½ΠΈΠΊΠΈ ΠΏΠΎΠΌΠΈΠ»ΠΎΠΊ Π·Π° Π΄ΠΎΠΏΠΎΠΌΠΎΠ³ΠΎΡ <a href="https://www.starlette.io/exceptions/" class="external-link" target="_blank">ΡΠΈΡ
ΡΠ°ΠΌΠΈΡ
ΡΡΠΈΠ»ΡΡ ΠΎΠ±ΡΠΎΠ±ΠΊΠΈ ΠΏΠΎΠΌΠΈΠ»ΠΎΠΊ Π·Ρ Starlette</a>.
+
+ΠΡΠΈΠΏΡΡΡΠΈΠΌΠΎ, Ρ ΠΠ°Ρ Ρ Π²Π»Π°ΡΠ½ΠΈΠΉ ΠΎΠ±ΚΌΡΠΊΡ ΠΏΠΎΠΌΠΈΠ»ΠΊΠΈ `UnicornException`, ΡΠΊΠ΅ ΠΠΈ (Π°Π±ΠΎ Π±ΡΠ±Π»ΡΠΎΡΠ΅ΠΊΠ°, ΡΠΊΡ ΠΠΈ Π²ΠΈΠΊΠΎΡΠΈΡΡΠΎΠ²ΡΡΡΠ΅) ΠΌΠΎΠΆΠ΅ `Π·Π³Π΅Π½Π΅ΡΡΠ²Π°ΡΠΈ` (`raise`).
+
+Π ΠΠΈ Ρ
ΠΎΡΠ΅ΡΠ΅ ΠΎΠ±ΡΠΎΠ±Π»ΡΡΠΈ ΡΠ΅ Π²ΠΈΠΊΠ»ΡΡΠ΅Π½Π½Ρ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΠΎ Π·Π° Π΄ΠΎΠΏΠΎΠΌΠΎΠ³ΠΎΡ FastAPI.
+
+ΠΠΈ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄ΠΎΠ΄Π°ΡΠΈ Π²Π»Π°ΡΠ½ΠΈΠΉ ΠΎΠ±ΡΠΎΠ±Π½ΠΈΠΊ Π²ΠΈΠΊΠ»ΡΡΠ΅Π½Ρ Π·Π° Π΄ΠΎΠΏΠΎΠΌΠΎΠ³ΠΎΡ `@app.exception_handler()`:
+
+{* ../../docs_src/handling_errors/tutorial003.py hl[5:7,13:18,24] *}
+
+Π’ΡΡ, ΡΠΊΡΠΎ ΠΠΈ Π·Π²Π΅ΡΠ½Π΅ΡΠ΅ΡΡ Π΄ΠΎ `/unicorns/yolo`, ΡΠΎ Π·Π³Π΅Π½Π΅ΡΡΡΡΡΡΡ ΠΏΠΎΠΌΠΈΠ»ΠΊΠ° `UnicornException`.
+
+ΠΠ»Π΅ Π²ΠΎΠ½Π° Π±ΡΠ΄Π΅ ΠΎΠ±ΡΠΎΠ±Π»Π΅Π½Π° ΡΡΠ½ΠΊΡΡΡΡ-ΠΎΠ±ΡΠΎΠ±Π½ΠΈΠΊΠΎΠΌ `unicorn_exception_handler`.
+
+ΠΡΠΆΠ΅, ΠΠΈ ΠΎΡΡΠΈΠΌΠ°ΡΡΠ΅ Π·ΡΠΎΠ·ΡΠΌΡΠ»Ρ ΠΏΠΎΠΌΠΈΠ»ΠΊΡ Π·Ρ HTTP-ΡΡΠ°ΡΡΡΠΎΠΌ `418` Ρ JSON-Π²ΡΠ΄ΠΏΠΎΠ²ΡΠ΄Π΄Ρ:
+
+```JSON
+{"message": "Oops! yolo did something. There goes a rainbow..."}
+```
+
+/// note | Π’Π΅Ρ
Π½ΡΡΠ½Ρ Π΄Π΅ΡΠ°Π»Ρ
+
+ΠΠΈ ΡΠ°ΠΊΠΎΠΆ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΠΈΠΊΠΎΡΠΈΡΡΠΎΠ²ΡΠ²Π°ΡΠΈ `from starlette.requests import Request` Ρ `from starlette.responses import JSONResponse`.
+
+**FastAPI** Π½Π°Π΄Π°Ρ ΡΡ ΡΠ°ΠΌΡ `starlette.responses`, ΡΠΎ ΠΉ `fastapi.responses`, ΠΏΡΠΎΡΡΠΎ Π΄Π»Ρ Π·ΡΡΡΠ½ΠΎΡΡΡ ΡΠΎΠ·ΡΠΎΠ±Π½ΠΈΠΊΠ°. ΠΠ»Π΅ Π±ΡΠ»ΡΡΡΡΡΡ Π΄ΠΎΡΡΡΠΏΠ½ΠΈΡ
Π²ΡΠ΄ΠΏΠΎΠ²ΡΠ΄Π΅ΠΉ Π½Π°Π΄Ρ
ΠΎΠ΄ΡΡΡ Π±Π΅Π·ΠΏΠΎΡΠ΅ΡΠ΅Π΄Π½ΡΠΎ Π·Ρ Starlette. Π’Π΅ ΠΆ ΡΠ°ΠΌΠ΅ ΡΡΠΎΡΡΡΡΡΡΡ Ρ `Request`.
+
+///
+
+## ΠΠ΅ΡΠ΅Π²ΠΈΠ·Π½Π°ΡΠ΅Π½Π½Ρ ΠΎΠ±ΡΠΎΠ±Π½ΠΈΠΊΡΠ² ΠΏΠΎΠΌΠΈΠ»ΠΎΠΊ Π·Π° Π·Π°ΠΌΠΎΠ²ΡΡΠ²Π°Π½Π½ΡΠΌ
+
+**FastAPI** ΠΌΠ°Ρ ΠΊΡΠ»ΡΠΊΠ° ΠΎΠ±ΡΠΎΠ±Π½ΠΈΠΊΡΠ² ΠΏΠΎΠΌΠΈΠ»ΠΎΠΊ Π·Π° Π·Π°ΠΌΠΎΠ²ΡΡΠ²Π°Π½Π½ΡΠΌ.
+
+Π¦Ρ ΠΎΠ±ΡΠΎΠ±Π½ΠΈΠΊΠΈ Π²ΡΠ΄ΠΏΠΎΠ²ΡΠ΄Π°ΡΡΡ Π·Π° ΠΏΠΎΠ²Π΅ΡΠ½Π΅Π½Π½Ρ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΈΡ
JSON-Π²ΡΠ΄ΠΏΠΎΠ²ΡΠ΄Π΅ΠΉ, ΠΊΠΎΠ»ΠΈ ΠΠΈ `Π³Π΅Π½Π΅ΡΡΡΡΠ΅` (`raise`) `HTTPException`, Π° ΡΠ°ΠΊΠΎΠΆ ΠΊΠΎΠ»ΠΈ Π·Π°ΠΏΠΈΡ ΠΌΡΡΡΠΈΡΡ Π½Π΅ΠΊΠΎΡΠ΅ΠΊΡΠ½Ρ Π΄Π°Π½Ρ.
+
+ΠΠΈ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠ΅ΡΠ΅Π²ΠΈΠ·Π½Π°ΡΠΈΡΠΈ ΡΡ ΠΎΠ±ΡΠΎΠ±Π½ΠΈΠΊΠΈ, ΡΡΠ²ΠΎΡΠΈΠ²ΡΠΈ Π²Π»Π°ΡΠ½Ρ.
+
+### ΠΠ΅ΡΠ΅Π²ΠΈΠ·Π½Π°ΡΠ΅Π½Π½Ρ ΠΏΠΎΠΌΠΈΠ»ΠΎΠΊ Π²Π°Π»ΡΠ΄Π°ΡΡΡ Π·Π°ΠΏΠΈΡΡ
+
+ΠΠΎΠ»ΠΈ Π·Π°ΠΏΠΈΡ ΠΌΡΡΡΠΈΡΡ Π½Π΅ΠΊΠΎΡΠ΅ΠΊΡΠ½Ρ Π΄Π°Π½Ρ, **FastAPI** Π³Π΅Π½Π΅ΡΡΡ `RequestValidationError`.
+
+Π ΡΠ°ΠΊΠΎΠΆ Π²ΠΊΠ»ΡΡΠ°Ρ ΠΎΠ±ΡΠΎΠ±Π½ΠΈΠΊ ΠΏΠΎΠΌΠΈΠ»ΠΎΠΊ Π·Π° Π·Π°ΠΌΠΎΠ²ΡΡΠ²Π°Π½Π½ΡΠΌ Π΄Π»Ρ Π½ΡΠΎΠ³ΠΎ.
+
+Π©ΠΎΠ± ΠΏΠ΅ΡΠ΅Π²ΠΈΠ·Π½Π°ΡΠΈΡΠΈ ΠΉΠΎΠ³ΠΎ, ΡΠΌΠΏΠΎΡΡΡΠΉΡΠ΅ `RequestValidationError` Ρ Π²ΠΈΠΊΠΎΡΠΈΡΡΠΎΠ²ΡΠΉΡΠ΅ ΠΉΠΎΠ³ΠΎ Π· `@app.exception_handler(RequestValidationError)` Π΄Π»Ρ Π΄Π΅ΠΊΠΎΡΡΠ²Π°Π½Π½Ρ ΠΎΠ±ΡΠΎΠ±Π½ΠΈΠΊΠ° ΠΏΠΎΠΌΠΈΠ»ΠΎΠΊ.
+
+ΠΠ±ΡΠΎΠ±Π½ΠΈΠΊ ΠΏΠΎΠΌΠΈΠ»ΠΎΠΊ ΠΎΡΡΠΈΠΌΡΡ `Request` Ρ ΡΠ°ΠΌΡ ΠΏΠΎΠΌΠΈΠ»ΠΊΡ.
+
+{* ../../docs_src/handling_errors/tutorial004.py hl[2,14:16] *}
+
+Π’Π΅ΠΏΠ΅Ρ, ΡΠΊΡΠΎ ΠΠΈ ΠΏΠ΅ΡΠ΅ΠΉΠ΄Π΅ΡΠ΅ Π·Π° ΠΏΠΎΡΠΈΠ»Π°Π½Π½ΡΠΌ `/items/foo`, Π·Π°ΠΌΡΡΡΡ ΡΠΎΠ³ΠΎ, ΡΠΎΠ± ΠΎΡΡΠΈΠΌΠ°ΡΠΈ ΡΡΠ°Π½Π΄Π°ΡΡΠ½Ρ JSON-ΠΏΠΎΠΌΠΈΠ»ΠΊΡ:
+
+```JSON
+{
+ "detail": [
+ {
+ "loc": [
+ "path",
+ "item_id"
+ ],
+ "msg": "value is not a valid integer",
+ "type": "type_error.integer"
+ }
+ ]
+}
+```
+
+ΠΠΈ ΠΎΡΡΠΈΠΌΠ°ΡΡΠ΅ ΡΠ΅ΠΊΡΡΠΎΠ²Ρ Π²Π΅ΡΡΡΡ:
+
+```
+1 validation error
+path -> item_id
+ value is not a valid integer (type=type_error.integer)
+```
+
+#### `RequestValidationError` ΠΏΡΠΎΡΠΈ `ValidationError`
+
+/// warning | Π£Π²Π°Π³Π°
+
+Π¦Π΅ ΡΠ΅Ρ
Π½ΡΡΠ½Ρ Π΄Π΅ΡΠ°Π»Ρ, ΡΠΊΡ ΠΠΈ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠΎΠΏΡΡΡΠΈΡΠΈ, ΡΠΊΡΠΎ Π²ΠΎΠ½ΠΈ Π·Π°ΡΠ°Π· Π½Π΅ Π²Π°ΠΆΠ»ΠΈΠ²Ρ Π΄Π»Ρ ΠΠ°Ρ.
+
+///
+
+`RequestValidationError` Ρ ΠΏΡΠ΄ΠΊΠ»Π°ΡΠΎΠΌ Pydantic <a href="https://docs.pydantic.dev/latest/concepts/models/#error-handling" class="external-link" target="_blank">`ValidationError`</a>.
+
+**FastAPI** Π²ΠΈΠΊΠΎΡΠΈΡΡΠΎΠ²ΡΡ ΠΉΠΎΠ³ΠΎ Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΠΊΡΠΎ ΠΠΈ Π²ΠΈΠΊΠΎΡΠΈΡΡΠΎΠ²ΡΡΡΠ΅ ΠΌΠΎΠ΄Π΅Π»Ρ Pydantic Ρ `response_model` Ρ Ρ Π²Π°ΡΠΈΡ
Π΄Π°Π½ΠΈΡ
Ρ ΠΏΠΎΠΌΠΈΠ»ΠΊΠ°, ΠΠΈ ΠΏΠΎΠ±Π°ΡΠΈΠ»ΠΈ ΠΏΠΎΠΌΠΈΠ»ΠΊΡ Ρ ΡΠ²ΠΎΡΠΌΡ ΠΆΡΡΠ½Π°Π»Ρ.
+
+ΠΠ»Π΅ ΠΊΠ»ΡΡΠ½Ρ/ΠΊΠΎΡΠΈΡΡΡΠ²Π°Ρ Π½Π΅ ΠΏΠΎΠ±Π°ΡΠΈΡΡ ΡΡ. ΠΠ°ΡΠΎΠΌΡΡΡΡ ΠΊΠ»ΡΡΠ½Ρ ΠΎΡΡΠΈΠΌΠ°Ρ "Internal Server Error" Π·Ρ ΡΡΠ°ΡΡΡΠΎΠΌ HTTP `500`.
+
+Π’Π°ΠΊ ΠΌΠ°Ρ Π±ΡΡΠΈ, ΡΠΊΡΠΎ Ρ ΠΠ°Ρ Π²ΠΈΠ½ΠΈΠΊΠ»Π° `ValidationError` Pydantic Ρ *Π²ΡΠ΄ΠΏΠΎΠ²ΡΠ΄Ρ* Π°Π±ΠΎ Π΄Π΅ΡΠ½Π΄Π΅ Ρ Π²Π°ΡΠΎΠΌΡ ΠΊΠΎΠ΄Ρ (Π½Π΅ Ρ *Π·Π°ΠΏΠΈΡΡ* ΠΊΠ»ΡΡΠ½ΡΠ°), ΡΠ΅ Π½Π°ΡΠΏΡΠ°Π²Π΄Ρ Ρ ΠΏΠΎΠΌΠΈΠ»ΠΊΠΎΡ Ρ ΠΠ°ΡΠΎΠΌΡ ΠΊΠΎΠ΄Ρ.
+
+Π ΠΏΠΎΠΊΠΈ ΠΠΈ ΡΡ Π²ΠΈΠΏΡΠ°Π²Π»ΡΡΡΠ΅, ΠΊΠ»ΡΡΠ½ΡΠΈ/ΠΊΠΎΡΠΈΡΡΡΠ²Π°ΡΡ Π½Π΅ ΠΏΠΎΠ²ΠΈΠ½Π½Ρ ΠΌΠ°ΡΠΈ Π΄ΠΎΡΡΡΠΏΡ Π΄ΠΎ Π²Π½ΡΡΡΡΡΠ½ΡΠΎΡ ΡΠ½ΡΠΎΡΠΌΠ°ΡΡΡ ΠΏΡΠΎ ΠΏΠΎΠΌΠΈΠ»ΠΊΡ, ΠΎΡΠΊΡΠ»ΡΠΊΠΈ ΡΠ΅ ΠΌΠΎΠΆΠ΅ ΠΏΡΠΈΠ·Π²Π΅ΡΡΠΈ Π΄ΠΎ Π²ΡΠ°Π·Π»ΠΈΠ²ΠΎΡΡΡ Π±Π΅Π·ΠΏΠ΅ΠΊΠΈ.
+
+### ΠΠ΅ΡΠ΅Π²ΠΈΠ·Π½Π°ΡΠ΅Π½Π½Ρ ΠΎΠ±ΡΠΎΠ±Π½ΠΈΠΊΠ° ΠΏΠΎΠΌΠΈΠ»ΠΎΠΊ `HTTPException`
+
+ΠΠ½Π°Π»ΠΎΠ³ΡΡΠ½ΠΎ, ΠΠΈ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠ΅ΡΠ΅Π²ΠΈΠ·Π½Π°ΡΠΈΡΠΈ ΠΎΠ±ΡΠΎΠ±Π½ΠΈΠΊ `HTTPException`.
+
+ΠΠ°ΠΏΡΠΈΠΊΠ»Π°Π΄, ΠΠΈ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π·Π°Ρ
ΠΎΡΡΡΠΈ ΠΏΠΎΠ²Π΅ΡΠ½ΡΡΠΈ ΡΠ΅ΠΊΡΡΠΎΠ²Ρ Π²ΡΠ΄ΠΏΠΎΠ²ΡΠ΄Ρ Π·Π°ΠΌΡΡΡΡ JSON Π΄Π»Ρ ΡΠΈΡ
ΠΏΠΎΠΌΠΈΠ»ΠΎΠΊ:
+
+{* ../../docs_src/handling_errors/tutorial004.py hl[3:4,9:11,22] *}
+
+/// note | Π’Π΅Ρ
Π½ΡΡΠ½Ρ Π΄Π΅ΡΠ°Π»Ρ
+
+ΠΠΈ ΡΠ°ΠΊΠΎΠΆ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΠΈΠΊΠΎΡΠΈΡΡΠΎΠ²ΡΠ²Π°ΡΠΈ `from starlette.responses import PlainTextResponse`.
+
+**FastAPI** Π½Π°Π΄Π°Ρ ΡΡ ΡΠ°ΠΌΡ `starlette.responses`, ΡΠΎ ΠΉ `fastapi.responses`, ΠΏΡΠΎΡΡΠΎ Π΄Π»Ρ Π·ΡΡΡΠ½ΠΎΡΡΡ ΡΠΎΠ·ΡΠΎΠ±Π½ΠΈΠΊΠ°. ΠΠ»Π΅ Π±ΡΠ»ΡΡΡΡΡΡ Π΄ΠΎΡΡΡΠΏΠ½ΠΈΡ
Π²ΡΠ΄ΠΏΠΎΠ²ΡΠ΄Π΅ΠΉ Π½Π°Π΄Ρ
ΠΎΠ΄ΡΡΡ Π±Π΅Π·ΠΏΠΎΡΠ΅ΡΠ΅Π΄Π½ΡΠΎ Π·Ρ Starlette.
+
+///
+
+### ΠΠΈΠΊΠΎΡΠΈΡΡΠ°Π½Π½Ρ ΡΡΠ»Π° `RequestValidationError`
+
+`RequestValidationError` ΠΌΡΡΡΠΈΡΡ `body`, ΡΠΊΠΈΠΉ Π²ΡΠ½ ΠΎΡΡΠΈΠΌΠ°Π² ΡΠ· Π½Π΅ΠΊΠΎΡΠ΅ΠΊΡΠ½ΠΈΠΌΠΈ Π΄Π°Π½ΠΈΠΌΠΈ.
+
+ΠΠΈ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΠΈΠΊΠΎΡΠΈΡΡΠΎΠ²ΡΠ²Π°ΡΠΈ ΡΠ΅ ΠΏΡΠ΄ ΡΠ°Ρ ΡΠΎΠ·ΡΠΎΠ±ΠΊΠΈ ΡΠ²ΠΎΠ³ΠΎ Π΄ΠΎΠ΄Π°ΡΠΊΠ°, ΡΠΎΠ± Π»ΠΎΠ³ΡΠ²Π°ΡΠΈ ΡΡΠ»ΠΎ Π·Π°ΠΏΠΈΡΡ ΡΠ° Π½Π°Π»Π°Π³ΠΎΠ΄ΠΆΡΠ²Π°ΡΠΈ ΠΉΠΎΠ³ΠΎ, ΠΏΠΎΠ²Π΅ΡΡΠ°ΡΠΈ ΠΊΠΎΡΠΈΡΡΡΠ²Π°ΡΠ΅Π²Ρ ΡΠΎΡΠΎ.
+
+{* ../../docs_src/handling_errors/tutorial005.py hl[14] *}
+
+Π’Π΅ΠΏΠ΅Ρ ΡΠΏΡΠΎΠ±ΡΠΉΡΠ΅ Π½Π°Π΄ΡΡΠ»Π°ΡΠΈ Π½Π΅ΠΊΠΎΡΠ΅ΠΊΡΠ½ΠΈΠΉ Π΅Π»Π΅ΠΌΠ΅Π½Ρ, Π½Π°ΠΏΡΠΈΠΊΠ»Π°Π΄:
+
+```JSON
+{
+ "title": "towel",
+ "size": "XL"
+}
+```
+ΠΠΈ ΠΎΡΡΠΈΠΌΠ°ΡΡΠ΅ Π²ΡΠ΄ΠΏΠΎΠ²ΡΠ΄Ρ, ΡΠΊΠ° ΠΏΠΎΠ²ΡΠ΄ΠΎΠΌΠΈΡΡ ΠΠ°ΠΌ, ΡΠΊΡ ΡΠ°ΠΌΠ΅ Π΄Π°Π½Ρ Ρ Π½Π΅ΠΊΠΎΡΠ΅ΠΊΡΠ½Ρ Ρ Π²Π°ΡΠΎΠΌΡ ΡΡΠ»Ρ Π·Π°ΠΏΠΈΡΡ:
+
+
+```JSON hl_lines="12-15"
+{
+ "detail": [
+ {
+ "loc": [
+ "body",
+ "size"
+ ],
+ "msg": "value is not a valid integer",
+ "type": "type_error.integer"
+ }
+ ],
+ "body": {
+ "title": "towel",
+ "size": "XL"
+ }
+}
+```
+
+#### `HTTPException` FastAPI ΠΏΡΠΎΡΠΈ `HTTPException` Starlette
+
+**FastAPI** ΠΌΠ°Ρ Π²Π»Π°ΡΠ½ΠΈΠΉ `HTTPException`.
+
+Π ΠΊΠ»Π°Ρ ΠΏΠΎΠΌΠΈΠ»ΠΊΠΈ `HTTPException` Π² **FastAPI** ΡΡΠΏΠ°Π΄ΠΊΠΎΠ²ΡΡΡΡΡΡ Π²ΡΠ΄ ΠΊΠ»Π°ΡΡ ΠΏΠΎΠΌΠΈΠ»ΠΊΠΈ `HTTPException` Π² Starlette.
+
+ΠΠ΄ΠΈΠ½Π° ΡΡΠ·Π½ΠΈΡΡ ΠΏΠΎΠ»ΡΠ³Π°Ρ Π² ΡΠΎΠΌΡ, ΡΠΎ `HTTPException` Π² **FastAPI** ΠΏΡΠΈΠΉΠΌΠ°Ρ Π±ΡΠ΄Ρ-ΡΠΊΡ Π΄Π°Π½Ρ, ΡΠΊΡ ΠΌΠΎΠΆΠ½Π° ΠΏΠ΅ΡΠ΅ΡΠ²ΠΎΡΠΈΡΠΈ Π½Π° JSON, Π΄Π»Ρ ΠΏΠΎΠ»Ρ `detail`, ΡΠΎΠ΄Ρ ΡΠΊ `HTTPException` Ρ Starlette ΠΏΡΠΈΠΉΠΌΠ°Ρ ΡΡΠ»ΡΠΊΠΈ ΡΡΠ΄ΠΊΠΈ.
+
+ΠΡΠΆΠ΅, ΠΠΈ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠΎΠ΄ΠΎΠ²ΠΆΡΠ²Π°ΡΠΈ Π²ΠΈΠΊΠΎΡΠΈΡΡΠΎΠ²ΡΠ²Π°ΡΠΈ `HTTPException` Π² **FastAPI** ΡΠΊ Π·Π°Π·Π²ΠΈΡΠ°ΠΉ Ρ ΡΠ²ΠΎΡΠΌΡ ΠΊΠΎΠ΄Ρ.
+
+ΠΠ»Π΅ ΠΊΠΎΠ»ΠΈ ΠΠΈ ΡΠ΅ΡΡΡΡΡΡΡΠ΅ ΠΎΠ±ΡΠΎΠ±Π½ΠΈΠΊ Π²ΠΈΠΊΠ»ΡΡΠ΅Π½Ρ, ΡΠ»ΡΠ΄ ΡΠ΅ΡΡΡΡΡΠ²Π°ΡΠΈ ΠΉΠΎΠ³ΠΎ Π΄Π»Ρ `HTTPException` Π·Ρ Starlette.
+
+Π’Π°ΠΊΠΈΠΌ ΡΠΈΠ½ΠΎΠΌ, ΡΠΊΡΠΎ Π±ΡΠ΄Ρ-ΡΠΊΠ° ΡΠ°ΡΡΠΈΠ½Π° Π²Π½ΡΡΡΡΡΠ½ΡΠΎΠ³ΠΎ ΠΊΠΎΠ΄Ρ Starlette Π°Π±ΠΎ ΡΠΎΠ·ΡΠΈΡΠ΅Π½Π½Ρ ΡΠΈ ΠΏΠ»Π°Π³ΡΠ½ Starlette Π·Π³Π΅Π½Π΅ΡΡΡ (raise) `HTTPException`, ΠΠ°Ρ ΠΎΠ±ΡΠΎΠ±Π½ΠΈΠΊ Π·ΠΌΠΎΠΆΠ΅ ΠΏΠ΅ΡΠ΅Ρ
ΠΎΠΏΠΈΡΠΈ ΡΠ° ΠΎΠ±ΡΠΎΠ±ΠΈΡΠΈ ΡΡ.
+
+Π£ ΡΡΠΎΠΌΡ ΠΏΡΠΈΠΊΠ»Π°Π΄Ρ, ΡΠΎΠ± ΠΌΠ°ΡΠΈ ΠΌΠΎΠΆΠ»ΠΈΠ²ΡΡΡΡ Π²ΠΈΠΊΠΎΡΠΈΡΡΠΎΠ²ΡΠ²Π°ΡΠΈ ΠΎΠ±ΠΈΠ΄Π²Π° `HTTPException` Π² ΠΎΠ΄Π½ΠΎΠΌΡ ΠΊΠΎΠ΄Ρ, ΠΏΠΎΠΌΠΈΠ»ΠΊΠ° Starlette ΠΏΠ΅ΡΠ΅ΠΉΠΌΠ΅Π½ΠΎΠ²ΡΡΡΡΡΡ Π½Π° `StarletteHTTPException`:
+
+```Python
+from starlette.exceptions import HTTPException as StarletteHTTPException
+```
+
+### ΠΠΎΠ²ΡΠΎΡΠ½Π΅ Π²ΠΈΠΊΠΎΡΠΈΡΡΠ°Π½Π½Ρ ΠΎΠ±ΡΠΎΠ±Π½ΠΈΠΊΡΠ² ΠΏΠΎΠΌΠΈΠ»ΠΎΠΊ **FastAPI**
+
+Π―ΠΊΡΠΎ ΠΠΈ Ρ
ΠΎΡΠ΅ΡΠ΅ Π²ΠΈΠΊΠΎΡΠΈΡΡΠΎΠ²ΡΠ²Π°ΡΠΈ ΠΏΠΎΠΌΠΈΠ»ΠΊΠΈ ΡΠ°Π·ΠΎΠΌ ΡΠ· ΡΠ°ΠΊΠΈΠΌΠΈ ΠΆ ΠΎΠ±ΡΠΎΠ±Π½ΠΈΠΊΠ°ΠΌΠΈ ΠΏΠΎΠΌΠΈΠ»ΠΎΠΊ Π·Π° Π·Π°ΠΌΠΎΠ²ΡΡΠ²Π°Π½Π½ΡΠΌ, ΡΠΊ Ρ **FastAPI**, ΠΠΈ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠΌΠΏΠΎΡΡΡΠ²Π°ΡΠΈ ΡΠ° ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎ Π²ΠΈΠΊΠΎΡΠΈΡΡΠΎΠ²ΡΠ²Π°ΡΠΈ ΡΡ
ΡΠ· `fastapi.exception_handlers`:
+
+{* ../../docs_src/handling_errors/tutorial006.py hl[2:5,15,21] *}
+
+Π£ ΡΡΠΎΠΌΡ ΠΏΡΠΈΠΊΠ»Π°Π΄Ρ ΠΠΈ ΠΏΡΠΎΡΡΠΎ Π²ΠΈΠΊΠΎΡΠΈΡΡΠΎΠ²ΡΡΡΠ΅ `print` Π΄Π»Ρ Π²ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ Π΄ΡΠΆΠ΅ ΡΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠ²Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ²ΡΠ΄ΠΎΠΌΠ»Π΅Π½Π½Ρ, Π°Π»Π΅ ΠΠΈ Π·ΡΠΎΠ·ΡΠΌΡΠ»ΠΈ ΠΎΡΠ½ΠΎΠ²Π½Ρ ΡΠ΄Π΅Ρ. ΠΠΈ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΎΠ±ΡΠΎΠ±ΠΈΡΠΈ ΠΏΠΎΠΌΠΈΠ»ΠΊΡ ΡΠ° ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎ Π²ΠΈΠΊΠΎΡΠΈΡΡΠΎΠ²ΡΠ²Π°ΡΠΈ ΠΎΠ±ΡΠΎΠ±Π½ΠΈΠΊΠΈ ΠΏΠΎΠΌΠΈΠ»ΠΎΠΊ Π·Π° Π·Π°ΠΌΠΎΠ²ΡΡΠ²Π°Π½Π½ΡΠΌ.