Errores de conformidad
Alcance
Sección titulada «Alcance»Estas entradas cubren las dos excepciones del espacio de nombres
NextPDF\Compliance\Exception. Ambas las lanza el subsistema de conformidad: la
canalización canónica de hash de cláusula y el ciclo de vida de conformidad (la
caché de evidencias de conformidad del documento, el promotor de auditado a
terminal y el observador de enfriamiento).
Ambas clases son final y extienden NextPdfException, que a su vez extiende
\RuntimeException e implementa ContextAwareExceptionInterface. Ninguna de las
subclases redefine getContext(), de modo que ambas heredan la implementación
base, que devuelve un arreglo vacío. El detalle de diagnóstico se transporta en
el mensaje de la excepción, no en getContext(). Capturar cualquiera de los dos
tipos como NextPdfException, o como \RuntimeException si se dispone de
manejadores existentes.
Requisitos de tiempo de ejecución del hash de cláusula
Sección titulada «Requisitos de tiempo de ejecución del hash de cláusula»ClauseHashRequirementException
Sección titulada «ClauseHashRequirementException»- Cuándo se lanza. Desde
ClauseHash::compute()cuando el entorno de ejecución de PHP anfitrión carece de un requisito imprescindible de la canalización canónica de hash de cláusula. Actualmente el único requisito de ese tipo esext-intl, usado para la normalización Unicode en Forma de Normalización KC (NFKC). El único punto de lanzamiento genera el mensajeClauseHash requires ext-intl for NFKC normalisation. - Por qué falla de forma cerrada.
composer.jsonexigeext-intl, de modo que esto solo se dispara en un consumidor descendente mal configurado que empaqueta NextPDF sin intl. La canalización se niega a calcular un resumen sin normalización NFKC en lugar de emitir de forma silenciosa un hash incompatible con todos los demás consumidores de hash de cláusula. - Contexto.
getContext()devuelve un arreglo vacío. La causa se indica en el mensaje. - Recuperación. Acción del operador: instalar y habilitar la extensión
intlde PHP en el anfitrión, y luego reintentar. No hay solución alternativa en código; el resumen normalizado no puede producirse sin ella.
Fallos del ciclo de vida de conformidad
Sección titulada «Fallos del ciclo de vida de conformidad»ComplianceLifecycleException
Sección titulada «ComplianceLifecycleException»- Cuándo se lanza. Desde el subsistema del ciclo de vida de conformidad cuando
se viola en tiempo de ejecución un invariante estructural de
claims.jsono de su canalización de persistencia. Los puntos de lanzamiento abarcan el promotor de auditado a terminal, el observador de enfriamiento y la caché incremental de evidencias de conformidad del documento. Los desencadenantes concretos son:- Documento raíz malformado:
claims.jsonno se decodifica a un objeto, oclaims.standardsno es un objeto JSON (por ejemplo,claims.json must decode to an object,claims.standards must be a JSON object,claims.json invalid JSON: <detail>). - Fallos de lectura:
claims.jsonfalta o no es legible (por ejemplo,claims.json not found at: <path>,claims.json unreadable at <path>). - Fallos de E/S de escritura atómica en la canalización de persistencia:
apertura del temporal,
flock, escritura corta,fflush,renameatómico y escritura del sidecar (por ejemplo,tmp open failed at <path>,tmp flock failed at <path>,tmp write short for <path>,tmp fflush failed at <path>,atomic rename failed for <path>,sha256 sidecar write failed at <path>). - Fallos del lado del codificador:
json_encode()rechaza la carga útil saliente (por ejemplo,claims.json encode failed: <detail>). - Fallos de arranque de la caché de evidencias: la caché incremental no
puede crear ni escribir en su directorio raíz (por ejemplo,
IncrementalEvidenceCache: cannot create rootDir <path>,IncrementalEvidenceCache: write failed for <path>,IncrementalEvidenceCache: rename failed for <path>). - Vulneraciones de invariantes internos: por ejemplo un
gmdate produced empty timestampofqClauseId: empty clauseKey.
- Documento raíz malformado:
- Por qué existe. Es un reemplazo con tipo de dominio del uso anterior de
\RuntimeExceptionen el código del ciclo de vida y de la caché. No cambia el contrato de tiempo de ejecución, porqueNextPdfExceptionya extiende\RuntimeException; las cláusulascatch (\RuntimeException $e)existentes siguen funcionando. - Contexto.
getContext()devuelve un arreglo vacío. La ruta infractora y el fallo específico se nombran en el mensaje; los fallos de decodificación y codificación JSON encadenan además la\JsonExceptionsubyacente como excepción previa, de modo que conviene leergetPrevious()para esos casos. - Recuperación.
- Para errores de forma y de lectura, se trata de una acción del operador:
inspeccionar
claims.jsonen la ruta nombrada en el mensaje, confirmar que es JSON bien formado cuya raíz y cuyo miembrostandardsson objetos, y confirmar que está presente y es legible. - Para errores de escritura atómica y de arranque de la caché, comprobar la existencia, los permisos y el espacio libre del directorio de destino, y luego reintentar.
- Para fallos del lado del codificador, se trata de una acción del
desarrollador: la carga útil entregada a
json_encode()no es codificable. Capturar la excepción previa encadenada y el mensaje para un informe de defectos.
- Para errores de forma y de lectura, se trata de una acción del operador:
inspeccionar