การตรวจสอบการเข้าและการจัดการความผิดพลาด

การตรวจสอบการเข้าและการจัดการความผิดพลาด

การตรวจสอบการเข้าและการจัดการความผิดพลาด

Aspose.BarCode FOSS for Python validates all input data before encoding. Each symbology has a dedicated InputParser อนุภาคที่ตรวจสอบตัวอักษร, ความยาวขั้นต่ําและกฎรูปแบบ เมื่อการยืนยันล้มเหลว ห้องสมุดจะยกเว้นเฉพาะจาก type BarcodeError ระดับชั้น ดังนั้นผู้เรียกสามารถแยกระหว่างปัญหาการเข้า, การรหัสความล้มเหลว และปัญหาในการทําผลงานได้.


ชั้น InputParser

ทุกปัญลักษณ์บันทึกการ InputParser การดําเนินการ เมื่อคุณเรียก BarcodeService.generate(), การพาร์เซอร์ทํางานแรก, ผลิต a NormalizedPayload หรือการเลี้ยงลูก InvalidInputError ถ้าข้อมูลไม่ถูกต้องสําหรับสัญลักษณ์นั้น.

from aspose_barcode_foss import BarcodeService

service = BarcodeService()

# Valid Code 128 input — passes the Code128InputParser
barcode = service.generate("code128", "VALID-DATA-001")

# Invalid EAN-13 input — too few digits
try:
    barcode = service.generate("ean13", "123")
except Exception as e:
    print(type(e).__name__, e)

ตัวพาร์เซอร์สัญลักษณ์แต่ละตัวจะตรวจสอบกฎต่าง ๆ:

  • Code128InputParser ตรวจสอบว่าตัวอักษรทั้งหมดอยู่ในระดับ ASCII ที่รองรับโดยชุดตัวละคร Code 128
  • Code39InputParser ยืนยันตัวอักษรกับฐาน Code 39 หรือ อัลบั้ม ASCII เต็มขึ้นอยู่กับ Code39Options.full_ascii
  • Ean13InputParser ต้องมีเลขที่ 12 หรือ 13 ตัว (หมายเลข 13 เป็นตัวเลขเช็ค)
  • Ean8InputParser ต้องเลข 7 หรือ 8 ตัวอย่างตรงกันเอง
  • QrInputParser ยืนยันข้อมูลกับตัวเลือกที่คัดเลือก QrEncodeMode (NUMERIC, ALPHANUMERic, BYTE หรือ KANJI)
  • UpcaInputParser ต้องมีเลข 11 หรือ 12 ตัวอย่าง
  • UpceInputParser จํานวนหลักเลขที่ 6, 7 หรือ 8 ตัวอย่างที่มีรูปแบบ UPC-E ที่มีผล

การจัดเรียงความผิดพลาด Barcode

การยกเว้นทั้งหมดมาจากการ BarcodeError, ซึ่งขยาย Python ที่ตั้งอยู่ใน Exception.การจัดเรียงเป็นระดับอนุญาตให้มีบล็อกการจับในระยะความเฉพาะที่แตกต่างกัน:

Exceptionพัฒนา เมื่อไหร่
BarcodeErrorคลาสฐานสําหรับการยกเว้นห้องสมุดทั้งหมด
InvalidInputErrorการตรวจสอบข้อมูลการเข้าล้มเหลว (ตัวอักษรผิด, ความยาวผิด)
EncodingErrorการรหัส logical ไม่สําเร็จหลังจากการตรวจสอบผ่าน
RenderingErrorRenderer พบความผิดพลาดระหว่างการออก SVG หรือ PNG
SymbologyNotFoundErrorชื่อสัญลักษณ์ไม่ได้ถูกจดทะเบียนใน SymbologyRegistry
UnsupportedCapabilityErrorความสามารถที่ต้องการไม่พร้อมสําหรับสัญลักษณ์
UnsupportedFeatureErrorคุณสมบัติถูกกําหนด แต่ไม่ได้ดําเนินการ
from aspose_barcode_foss import BarcodeService
from aspose_barcode_foss.errors import (
    BarcodeError,
    InvalidInputError,
    EncodingError,
    SymbologyNotFoundError,
)

service = BarcodeService()

try:
    barcode = service.generate("code128", "TEST-001")
    svg = barcode.to_svg()
except InvalidInputError as e:
    print(f"Input rejected: {e}")
except EncodingError as e:
    print(f"Encoding failed: {e}")
except SymbologyNotFoundError as e:
    print(f"Unknown symbology: {e}")
except BarcodeError as e:
    print(f"Barcode error: {e}")

การยืนยันชื่อสัญลักษณ์

SymbologyNotFoundError ถูกยกขึ้นเมื่อ BarcodeService.generate() ได้รับชื่อสัญลักษณ์ที่ไม่ได้ลงทะเบียน. SymbologyRegistry คําตอบชื่อโดย ชื่อธรรม หรือนามฉายา, ดังนั้น "code128", "Code128",และ "CODE128" ทุกคนตัดสินใจตามคํานิยามเดียวกัน.

from aspose_barcode_foss import BarcodeService
from aspose_barcode_foss.errors import SymbologyNotFoundError

service = BarcodeService()

try:
    barcode = service.generate("invalid_type", "data")
except SymbologyNotFoundError as e:
    print(f"Not found: {e}")

ตรวจสอบการยืนยันตัวเลข

EAN-13, EAn-8, UPC-A, และ U PC-E สัญลักษณ์คํานวณตัวเลขเช็คโดยอัตโนมัติ. หากคุณส่งข้อมูลทั้งหมดรวมทั้งตัวหลักเช็ก เครื่องพาร์เซอร์จะตรวจสอบมันกับค่าที่คํานวนไว้ allow_check_digit_input อสังหาริมทรัพย์บน Ean13Options และ Ean8Options ควบคุมพฤติกรรมนี้.

from aspose_barcode_foss import BarcodeService
from aspose_barcode_foss import Ean13Options

service = BarcodeService()

# 12 digits — check digit computed automatically
barcode = service.generate("ean13", "590123412345")

# 13 digits — parser verifies the 13th digit matches the computed value
barcode = service.generate(
    "ean13", "5901234123457",
    encode=Ean13Options(allow_check_digit_input=True),
)

เคล็ดลับและปฏิบัติที่ดีที่สุด

  • Catch InvalidInputError สําหรับแบบฟอร์มการเข้าที่มองหน้าผู้ใช้งาน ซึ่งข้อมูลอาจไม่ตรงกับความต้องการด้านสัญลักษณ์
  • การใช้งาน BarcodeError เป็นการจับรวมทุกสิ่งเท่านั้น เมื่อคุณไม่จําเป็นต้องแยกระหว่างประเภทความผิดพลาด
  • ตรวจสอบชื่อสัญลักษณ์กับ 7 สัญญัติที่สนับสนุน (code128, code39, ean13, e an8, qrcode, upca, u pce) ก่อนการโทรไปยัง generate() เพื่อหลีกเลี่ยง SymbologyNotFoundError
  • สําหรับ QR code, set encoding_mode โดยชัดเจนผ่าน QrOptions เมื่อข้อมูลมีตัวอักษรที่ไม่ใช่ ASCII
  • ให้ห้องสมุดคํานวณตรวจสอบตัวเลข แทนที่จะให้พวกเขาด้วยมือนี้หลีกเลี่ยงการไม่ตรงกันได้

ปัญหาทั่วไป

IssueCauseแก้ไข
InvalidInputError ใน EAN-13ข้อมูลมีตัวเลขน้อยกว่า 12 ตัว หรือรวมอักษรที่ไม่ใช่ตัวหมายเลขส่งเลขที่ 12 หรือ 13 ตัวอย่างตรงกันเอง
SymbologyNotFoundErrorการเขียนผิดในชื่อสัญลักษณ์ (เช่น. "code_128" แทนของ "code128")ใช้ ชื่อ ที่ ถูก กฎหมาย โดย ไม่ ต้อง ทํา การ ย้ํา ราคา
EncodingError ในโค้ด 39ข้อมูลมีตัวอักษรเล็ก โดยไม่มี full_ascii=Trueเซ็ต Code39Options(full_ascii=True)
UnsupportedFeatureErrorการเรียกลักษณะที่กําหนดไว้ แต่ยังไม่ได้นําไปใช้งานCheck known_limitations เรื่อง รูปแบบการแสดงอักษร
InvalidInputError เรื่อง UPC-Aข้อมูลมีมากกว่า 12 หลักส่งเลข 11 หรือ 12 ตัวอย่างตรงกันเอง

FAQ

วิธีการตรวจสอบว่าชื่อสัญลักษณ์มีค่าหรือไม่ ก่อนสร้าง?

การใช้งาน BarcodeService.registry เพื่อเข้าถึง SymbologyRegistry.โทรหาฉันนะ get_definition() และจับปลา SymbologyNotFoundError ถ้าชื่อไม่ได้ลงทะเบียน.

ผมสามารถปิดการตรวจสอบตัวเลขในการยืนยันสําหรับบาร์โค้ด EAN ได้หรือไม่?

การพาร์เซอร์จะยืนยันตัวเลขเช็คเสมอเมื่อคุณส่งเข้าเต็มความยาว (13 ตัวเลขสําหรับ EAN-13, 8 สําหรับ EAS-8) เพื่อหลีกเลี่ยงการตรวจสอบ, เพียงแค่ให้หลักข้อมูล (12 ตัวแทนสําหรับEAN-13 และ 7 ตัวอย่างสําหรับ eAN-8) แล้วปล่อยห้องสมุดคํานวณตัว digit เช็ก.

แล้วถ้าผมส่งข้อมูลไบนารีไปยังสัญลักษณ์บาร์โค้ด 1 มิติล่ะ?

InvalidInputError โค้ด 128, โครงการ 39, EAN และ UPC สัญลักษณ์รับเพียงข้อมูลข้อความ สําหรับข้อมูลไบนารี ใช้ QR Code กับ QrEncodeMode.BYTE.

ห้องสมุดตรวจสอบความยาวของข้อมูลสําหรับ QR Code ได้หรือไม่?

QrInputParser ยืนยันว่าข้อมูลจะเข้ากับความจุของรุ่น QR ที่ขอ หากไม่มีเวอร์ชั่นใด ๆ ถูกระบุ ห้องสมุดเลือก เวอร์ ชั่นที่เล็กที่สุดที่จะรองรับข้อมูล.


คําอธิบายการพบบ่อย API

ประเภท / กลไกDescription
InputParser.parse(data, options)วิธีการสรุป ยืนยันและปกติเข้าสู่ NormalizedPayload
Code128InputParser.parse(data, options)ยืนยันตัวอักษรเข้าโค้ด 128
Code39InputParser.parse(data, options)การยืนยันฐานรหัส 39 หรือการเข้า ASCII เต็มที่
Ean13InputParser.parse(data, options)ยืนยันการนับตัวเลข EAN-13 และตรวจสอบตัวหลัก
Ean8InputParser.parse(data, options)ยืนยันการนับตัวเลข EAN-8 และตรวจสอบตัวหลัก
QrInputParser.parse(data, options)ยืนยันข้อมูล QR ต่อการรหัสแบบที่เลือก
UpcaInputParser.parse(data, options)ยืนยันการนับตัวเลข UPC-A
UpceInputParser.parse(data, options)ยืนยันการนับตัวเลขและรูปแบบ UPC-E
BarcodeErrorพื้นฐานความพิเศษสําหรับห้องสมุดบาร์โค้ด
InvalidInputErrorเติมข้อมูลการเข้าที่ไม่ถูกต้อง
EncodingErrorเติมเมื่อการรหัสล้มเหลว
RenderingErrorสร้างเมื่อการทําผลตอบแทนล้มเหลว
SymbologyNotFoundErrorการยกขึ้นสําหรับชื่อสัญลักษณ์ที่ไม่ได้ลงทะเบียน
UnsupportedCapabilityErrorการยกขึ้นสําหรับความสามารถที่ไม่พร้อม
UnsupportedFeatureErrorเติมสําหรับลักษณะที่ไม่ได้นําไปใช้งาน

See Also

 ภาษาไทย