mirror of
https://github.com/Vateron-Media/XC_VM.git
synced 2026-10-21 04:03:20 +02:00
Fix Markdown-mangling artifacts the free web engine (yandex) produced in the
committed docs/ru, and regenerate the whole tree cleanly (0 fallbacks):
- Sentinel format @@N@@ -> {N}. MT engines are trained to preserve curly
format-string placeholders, so {N} survives code-heavy lines where @@N@@ (and
ZZZ…ZZZ, which also duplicated its Z) were split/moved — e.g. the stray
"@0@@" in the FAQ and "load balancerZ" in the README are gone.
- Possessive: a trailing English `'s` is consumed INTO the masked span and
dropped on restore. Every sentinel format breaks when a bare `'s` sits right
after it, and Russian has no possessive `'s`.
- Validate + retry: after restore, any leftover brace fragment triggers a retry
(the engine is non-deterministic); after a few failures the line stays English
so a broken token is never emitted.
- Glossary += KeyDB, yt-dlp, Ubuntu, iptables, MAGSCAN.
Regenerated docs/ru (37 files, translators/yandex): no residual sentinels,
mkdocs build --strict clean.
111 lines
3.6 KiB
Markdown
111 lines
3.6 KiB
Markdown
# Иерархия исключений
|
|
|
|
Все исключения XC_VM расширяют диапазон `XcVmException`, так что вызывающие абоненты могут перехватывать все дерево с помощью
|
|
один `catch` блокирует или нацелен на определенную подсистему.
|
|
|
|
---
|
|
|
|
## Дерево
|
|
|
|
```
|
|
\Exception
|
|
└── XcVmException
|
|
├── Container
|
|
│ └── ContainerException (PSR-11 ContainerExceptionInterface)
|
|
│ ├── CircularDependencyException
|
|
│ ├── ServiceCreationException
|
|
│ └── NotFoundException (PSR-11 NotFoundExceptionInterface)
|
|
└── Module
|
|
└── ModuleException
|
|
├── ModuleNotFoundException
|
|
├── ModuleLoadException
|
|
├── ModuleManifestException
|
|
└── ModuleCycleException
|
|
```
|
|
|
|
---
|
|
|
|
## Исключения для контейнеров
|
|
|
|
|Класс|Когда его бросают|
|
|
| ----- | ----------- |
|
|
| `ContainerException` |База данных обо всех неисправностях контейнеров|
|
|
| `CircularDependencyException` |Заводской график службы содержит цикл|
|
|
| `ServiceCreationException` |Заводской вызов был произведен при создании сервиса|
|
|
| `NotFoundException` |`get($id)` запрос на незарегистрированную услугу|
|
|
|
|
`NotFoundException` реализует оба интерфейса PSR-11, поэтому контейнер совместим:
|
|
|
|
```php
|
|
try {
|
|
$service = $container->get('unknown');
|
|
} catch (NotFoundException $e) {
|
|
// PSR-11 NotFoundExceptionInterface
|
|
}
|
|
```
|
|
|
|
---
|
|
|
|
## Исключения из модулей
|
|
|
|
|Класс|Когда его бросают|
|
|
| ----- | ----------- |
|
|
| `ModuleException` |База данных для всех отказов модулей|
|
|
| `ModuleNotFoundException` |Отсутствует необходимый модуль зависимостей|
|
|
| `ModuleLoadException` |Файл модуля не может быть загружен или класс не найден|
|
|
| `ModuleManifestException` |`module.json` отсутствует, неправильно сформирован или не прошел проверку|
|
|
| `ModuleCycleException` |Граф зависимостей имеет цикл|
|
|
|
|
---
|
|
|
|
## Перехват по подсистемам
|
|
|
|
```php
|
|
// Catch any XC_VM exception
|
|
try {
|
|
$loader->loadAll();
|
|
} catch (XcVmException $e) {
|
|
logger()->error($e->getMessage());
|
|
}
|
|
|
|
// Catch only module-related failures
|
|
try {
|
|
$loader->loadAll();
|
|
} catch (ModuleException $e) {
|
|
// ModuleNotFoundException | ModuleLoadException | ...
|
|
}
|
|
|
|
// Catch container-specific failures
|
|
try {
|
|
$container->get('missing');
|
|
} catch (ContainerException $e) {
|
|
// CircularDependencyException | NotFoundException | ...
|
|
}
|
|
```
|
|
|
|
---
|
|
|
|
## Местоположение
|
|
|
|
```
|
|
src/Core/Exception/
|
|
├── XcVmException.php
|
|
├── Container/
|
|
│ ├── ContainerException.php
|
|
│ ├── CircularDependencyException.php
|
|
│ ├── ServiceCreationException.php
|
|
│ └── NotFoundException.php
|
|
└── Module/
|
|
├── ModuleException.php
|
|
├── ModuleNotFoundException.php
|
|
├── ModuleLoadException.php
|
|
├── ModuleManifestException.php
|
|
└── ModuleCycleException.php
|
|
```
|
|
|
|
## Связанные файлы
|
|
|
|
|Файл|Роль|
|
|
| --- | --- |
|
|
| `src/Core/Exception/` |Базовые классы исключений и иерархия проекта|
|