ข้อผิดพลาด compliance
รายการเหล่านี้ครอบคลุม exception สองตัวใน namespace NextPDF\Compliance\Exception
ทั้งสองถูกยกโดยระบบย่อย compliance: ไปป์ไลน์
clause-hash ตามแบบและวงจรชีวิต compliance (cache ของ Document Compliance
Evidence ตัว promote จาก audited ไปยัง terminal และตัวสังเกตการณ์ cooldown)
ทั้งสองคลาสเป็น final และสืบทอดจาก NextPdfException ซึ่งตัวมันเองสืบทอด
จาก \RuntimeException และนำ ContextAwareExceptionInterface ไปใช้ ทั้งสอง
ซับคลาสไม่เขียนทับ getContext() ทั้งคู่จึงสืบทอดการนำไปใช้ฐาน
ซึ่งคืนอาร์เรย์ว่าง รายละเอียดการวินิจฉัยถูกพกพาในข้อความ exception
ไม่ใช่ใน getContext() จับชนิดใดชนิดหนึ่งเป็น
NextPdfException หรือเป็น \RuntimeException หากคุณมีตัวจัดการอยู่แล้ว
ข้อกำหนดรันไทม์ของ clause-hash
หัวข้อที่มีชื่อว่า “ข้อกำหนดรันไทม์ของ clause-hash”ClauseHashRequirementException
หัวข้อที่มีชื่อว่า “ClauseHashRequirementException”- ถูกยกเมื่อใด จาก
ClauseHash::compute()เมื่อรันไทม์ PHP ของ host ขาดข้อกำหนดที่จำเป็นของไปป์ไลน์ clause-hash ตามแบบ ปัจจุบันข้อกำหนดเดียวเช่นนั้นคือext-intlที่ใช้สำหรับการ normalize Unicode Normalization Form KC (NFKC) ไซต์ throw เดียวยกข้อความClauseHash requires ext-intl for NFKC normalisation - เหตุที่มันล้มเหลวแบบปิด
composer.jsonกำหนดext-intlสิ่งนี้จึงยิง เฉพาะใน downstream ที่กำหนดค่าผิดซึ่งบรรจุ NextPDF โดยไม่มี intl ไปป์ไลน์ปฏิเสธที่จะคำนวณ digest ที่ไม่ได้ normalize แบบ NFKC แทนการ ปล่อยแฮชที่ไม่เข้ากันกับผู้บริโภค clause-hash อื่นทุกตัวอย่างเงียบๆ - Context
getContext()คืนอาร์เรย์ว่าง สาเหตุถูกระบุใน ข้อความ - Recovery การกระทำของผู้ปฏิบัติงาน: ติดตั้งและเปิดส่วนขยาย PHP
intlบน host แล้วลองใหม่ ไม่มีวิธีแก้ในโค้ด digest ที่ normalize แล้ว ไม่อาจสร้างได้โดยไม่มีมัน
ความล้มเหลวของวงจรชีวิตการปฏิบัติตามข้อกำหนด
หัวข้อที่มีชื่อว่า “ความล้มเหลวของวงจรชีวิตการปฏิบัติตามข้อกำหนด”ComplianceLifecycleException
หัวข้อที่มีชื่อว่า “ComplianceLifecycleException”- ถูกยกเมื่อใด จากระบบย่อยวงจรชีวิต compliance เมื่อ
invariant เชิงโครงสร้างบน
claims.jsonหรือไปป์ไลน์การ persist ของมันถูกละเมิด ที่รันไทม์ ไซต์ throw ครอบคลุมตัว promote จาก audited ไปยัง terminal ตัวสังเกตการณ์ cooldown และ cache แบบ incremental ของ Document Compliance Evidence ตัวกระตุ้นที่เป็นรูปธรรมคือ:- Root document ที่ผิดรูป —
claims.jsonไม่ถอดรหัสเป็นอ็อบเจ็กต์ หรือclaims.standardsไม่ใช่อ็อบเจ็กต์ JSON (ตัวอย่างเช่นclaims.json must decode to an object,claims.standards must be a JSON object,claims.json invalid JSON: <detail>) - ความล้มเหลวการอ่าน —
claims.jsonขาดหายหรืออ่านไม่ได้ (ตัวอย่างเช่นclaims.json not found at: <path>,claims.json unreadable at <path>) - ความล้มเหลว I/O แบบ atomic-write ในไปป์ไลน์การ persist — temp open,
flock, short write,fflush, atomicrename, และ sidecar write (ตัวอย่าง เช่น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>) - ความล้มเหลวฝั่ง encoder —
json_encode()ปฏิเสธ payload ขาออก (ตัวอย่างเช่นclaims.json encode failed: <detail>) - ความล้มเหลวการ bootstrap evidence-cache — cache แบบ incremental ไม่อาจสร้าง
หรือเขียนไดเรกทอรี root ของมัน (ตัวอย่างเช่น
IncrementalEvidenceCache: cannot create rootDir <path>,IncrementalEvidenceCache: write failed for <path>,IncrementalEvidenceCache: rename failed for <path>) - การฝ่าฝืน invariant ภายใน — ตัวอย่างเช่น
gmdate produced empty timestampหรือfqClauseId: empty clauseKey
- Root document ที่ผิดรูป —
- เหตุที่มันมีอยู่ นี่เป็นการแทนที่แบบมีชนิดโดเมนสำหรับการใช้
\RuntimeExceptionเดิมในโค้ดวงจรชีวิตและ cache มันไม่เปลี่ยนสัญญา รันไทม์ เพราะNextPdfExceptionสืบทอดจาก\RuntimeExceptionอยู่แล้ว clausecatch (\RuntimeException $e)ที่มีอยู่ ยังทำงานต่อไป - Context
getContext()คืนอาร์เรย์ว่าง path ที่เป็นปัญหาและ ความล้มเหลวที่เฉพาะเจาะจงถูกระบุชื่อในข้อความ ความล้มเหลวการ decode และ encode JSON ยังเชื่อมโยง\JsonExceptionพื้นฐานเป็น exception ก่อนหน้า ดังนั้นให้อ่านgetPrevious()สำหรับสิ่งเหล่านั้น - Recovery
- สำหรับข้อผิดพลาดรูปทรงและการอ่าน นี่เป็นการกระทำของผู้ปฏิบัติงาน: ตรวจสอบ
claims.jsonที่ path ที่ระบุชื่อในข้อความ ยืนยันว่ามันเป็น JSON ที่มีรูปแบบดีซึ่ง root และสมาชิกstandardsเป็นอ็อบเจ็กต์ และยืนยันว่ามันมีอยู่และอ่านได้ - สำหรับข้อผิดพลาด atomic-write และ cache-bootstrap ให้ตรวจสอบความมีอยู่ของ ไดเรกทอรีเป้าหมาย สิทธิ์ และพื้นที่ว่าง แล้วลองใหม่
- สำหรับความล้มเหลวฝั่ง encoder นี่เป็นการกระทำของนักพัฒนา: payload ที่ส่งให้
json_encode()encode ไม่ได้ จับ exception ก่อนหน้าที่เชื่อมโยงกันและ ข้อความสำหรับรายงานข้อบกพร่อง
- สำหรับข้อผิดพลาดรูปทรงและการอ่าน นี่เป็นการกระทำของผู้ปฏิบัติงาน: ตรวจสอบ