ข้ามไปยังเนื้อหา
getnextpdf.com

ข้อผิดพลาด 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 หากคุณมีตัวจัดการอยู่แล้ว

  • ถูกยกเมื่อใด จาก 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 แล้ว ไม่อาจสร้างได้โดยไม่มีมัน

ความล้มเหลวของวงจรชีวิตการปฏิบัติตามข้อกำหนด

หัวข้อที่มีชื่อว่า “ความล้มเหลวของวงจรชีวิตการปฏิบัติตามข้อกำหนด”
  • ถูกยกเมื่อใด จากระบบย่อยวงจรชีวิต 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, atomic rename, และ 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>)
    • ความล้มเหลวฝั่ง encoderjson_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
  • เหตุที่มันมีอยู่ นี่เป็นการแทนที่แบบมีชนิดโดเมนสำหรับการใช้ \RuntimeException เดิมในโค้ดวงจรชีวิตและ cache มันไม่เปลี่ยนสัญญา รันไทม์ เพราะ NextPdfException สืบทอดจาก \RuntimeException อยู่แล้ว clause catch (\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 ก่อนหน้าที่เชื่อมโยงกันและ ข้อความสำหรับรายงานข้อบกพร่อง