Зміни в документі 5. Обробка помилок

Остання зміна 2024/05/17 19:03 автором Ashterix

Від версії 2.2
редаговано Ashterix
дата 2024/05/17 18:58
Змінити коментар: Немає коментарів для цієї версії
До версії 2.1
редаговано Ashterix
дата 2024/05/16 11:43
Змінити коментар: Немає коментарів для цієї версії

Підсумок

Подробиці

Властивості сторінки
Вміст
... ... @@ -1,77 +1,0 @@
1 -{{box cssClass="floatinginfobox" title="**Зміст**"}}
2 -{{toc/}}
3 -{{/box}}
4 -
5 -= Формат помилок в RPC =
6 -
7 -{{info}}
8 -Відповідно до специфікації JSON-RPC, коли виклик RPC призводить до помилки, об'єкт відповіді повинен містити елемент "error", який є об'єктом з наступними членами:
9 -
10 -- **code**: Число, яке вказує на тип помилки, що виникла. Це має бути ціле число.
11 -- **message**: Рядок, що надає короткий опис помилки. Повідомлення має бути коротким і лаконічним.
12 -- **data** (необов'язковий): Додаткова інформація про помилку, яка може бути корисною для налагодження.
13 -
14 -Докладніше про формат помилок можна прочитати у специфікації JSON-RPC: [[JSON-RPC 2.0 Specification>>https://www.jsonrpc.org/specification#error_object]].
15 -{{/info}}
16 -
17 -= Обробка помилок =
18 -
19 -У JsonRpcBundle реалізовано стандартний механізм обробки помилок для RPC запитів, який базується на окремому пакеті `ufo-tech/rpc-exceptions`. Цей пакет надає можливість детально обробляти помилки, що виникають під час виконання RPC запитів, і повертати стандартизовані коди та повідомлення про помилки.
20 -
21 -== Коди помилок та їх інтерпретація ==
22 -
23 -Пакет `ufo-tech/rpc-exceptions` надає перелік стандартних кодів помилок та відповідних класів виключень:
24 -
25 -|= Код                    |= Тип помилки          |= Опис                                              |=
26 -| -32700                 | Parse error          | Сервер отримав недійсний JSON                      |
27 -| -32600                 | Invalid Request      | Наданий JSON не є дійсним об'єктом запиту          |
28 -| -32601                 | Method not found     | Метод не існує або недоступний                     |
29 -| -32602                 | Invalid params       | Недійсні параметри методу                          |
30 -| -32603                 | Internal error       | Внутрішня помилка JSON-RPC                         |
31 -| -32500                 | Application error    | Помилка виконання процедури                        |
32 -| -32400                 | System error         | Логічна помилка в додатку                          |
33 -| -32401                 | Security error       | Токен не знайдено                                  |
34 -| -32403                 | Security error       | Недійсний токен                                    |
35 -| -32300                 | Async error          | Помилка передачі асинхронних даних                 |
36 -| -32301                 | Batch error          | Помилка batch-запиту                               |
37 -| -32000                 | Server error         | Зарезервовано для серверних помилок, визначених реалізацією |
38 -| від -32001 до -32099   | Користувацька помилка| ---                                               --|
39 -
40 -== Використання виключень у вашому коді ==
41 -
42 -{{code language="php" layout="LINENUMBERS" title="=== Отримання об'єкта виключення з коду ==="}}
43 -<?php
44 -use Ufo\RpcError\AbstractRpcErrorException;
45 -
46 -$code = -32700;
47 -$message = 'Some custom error message from rpc server'; // опціонально
48 -$rpcException = AbstractRpcErrorException::fromCode($code);
49 -// повертає екземпляр RpcJsonParseException::class
50 -{{/code}}
51 -
52 -{{code language="php" layout="LINENUMBERS" title="=== Отримання об'єкта виключення з масиву ==="}}
53 -<?php
54 -use Ufo\RpcError\AbstractRpcErrorException;
55 -
56 -$data = [
57 - 'code' => -32600,
58 - 'message' => 'Some custom error message from rpc server',
59 -];
60 -$rpcException = RpcBadRequestException::fromArray($data);
61 -// повертає екземпляр RpcBadRequestException::class
62 -{{/code}}
63 -
64 -{{code language="php" layout="LINENUMBERS" title="=== Отримання об'єкта виключення з JSON ==="}}
65 -<?php
66 -use Ufo\RpcError\AbstractRpcErrorException;
67 -
68 -$data = "{\"code\":-32500,\"message\":\"Some custom error message from rpc server\"}";
69 -$rpcException = AbstractRpcErrorException::fromJson($data);
70 -// повертає екземпляр RpcRuntimeException::class
71 -{{/code}}
72 -
73 -== Поради для розробників ==
74 -
75 -Якщо ви, як розробник, хочете повертати специфічну помилку, яка буде інтерпретована RPC сервером, вам слід використовувати один з інтерфейсів, наданих пакетом `ufo-tech/rpc-exceptions`, або наслідувати типовий ексепшен та притримуватися нумерації помилок.
76 -
77 -Однак, якщо специфічна обробка не потрібна, сервер здатний обробити будь-яку помилку або виключення, що відбуваються на рівні виконання методу API, забезпечуючи стабільність та надійність вашої системи.