การตรวจสอบการเข้าและการจัดการความผิดพลาด
การตรวจสอบการเข้าและการจัดการความผิดพลาด
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 128Code39InputParserยืนยันตัวอักษรกับฐาน Code 39 หรือ อัลบั้ม ASCII เต็มขึ้นอยู่กับCode39Options.full_asciiEan13InputParserต้องมีเลขที่ 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 ไม่สําเร็จหลังจากการตรวจสอบผ่าน |
RenderingError | Renderer พบความผิดพลาดระหว่างการออก 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 - ให้ห้องสมุดคํานวณตรวจสอบตัวเลข แทนที่จะให้พวกเขาด้วยมือนี้หลีกเลี่ยงการไม่ตรงกันได้
ปัญหาทั่วไป
| Issue | Cause | แก้ไข |
|---|---|---|
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 | เติมสําหรับลักษณะที่ไม่ได้นําไปใช้งาน |