mirror of
https://github.com/Vateron-Media/XC_VM.git
synced 2026-09-28 20:01:59 +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.
3.6 KiB
3.6 KiB
Иерархия исключений
Все исключения 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, поэтому контейнер совместим:
try {
$service = $container->get('unknown');
} catch (NotFoundException $e) {
// PSR-11 NotFoundExceptionInterface
}
Исключения из модулей
| Класс | Когда его бросают |
|---|---|
ModuleException |
База данных для всех отказов модулей |
ModuleNotFoundException |
Отсутствует необходимый модуль зависимостей |
ModuleLoadException |
Файл модуля не может быть загружен или класс не найден |
ModuleManifestException |
module.json отсутствует, неправильно сформирован или не прошел проверку |
ModuleCycleException |
Граф зависимостей имеет цикл |
Перехват по подсистемам
// 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/ |
Базовые классы исключений и иерархия проекта |