Chứng nhận nhập và xử lý lỗi

Chứng nhận nhập và xử lý lỗi

Chứng nhận nhập và xử lý lỗi

Aspose.BarCode FOSS for Python validates all input data before encoding. Each symbology has a dedicated InputParser subclass mà kiểm tra các tập hợp nhân vật, hạn chế chiều dài và định dạng quy tắc. Khi xác thực thất bại, thư viện đưa ra ngoại lệ từ BarcodeError Hiện học để các cuộc gọi có thể phân biệt giữa vấn đề nhập, mã hóa thất bại và rendering.


InputParser Layer - Tầng nhập khẩu

Mỗi biểu tượng ghi lại một InputParser - Đặt hàng: Khi bạn gọi BarcodeService.generate(), trục chạy đầu tiên, sản xuất một NormalizedPayload hoặc nâng cao InvalidInputError nếu dữ liệu không đúng cho biểu tượng đó.

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)

Mỗi biểu tượng parser xác nhận các quy tắc khác nhau:

  • Code128InputParser - kiểm tra rằng tất cả các ký tự nằm trong phạm vi ASCII được hỗ trợ bởi mã 128 bộ ký hiệu.
  • Code39InputParser - xác nhận các ký tự chống lại mã 39 cơ bản hoặc chữ cái ASCII đầy đủ tùy thuộc vào: Code39Options.full_ascii
  • Ean13InputParser - Cần chính xác 12 hoặc 13 số (thần thứ 13 là số kiểm tra)
  • Ean8InputParser - Cần chính xác 7 hoặc 8 số
  • QrInputParser - xác nhận dữ liệu chống lại người được chọn QrEncodeMode (Điều số, chữ cái, BYTE hoặc KANJI)
  • UpcaInputParser - Cần chính xác 11 hoặc 12 số
  • UpceInputParser - cần chính xác 6, 7 hoặc 8 số với mô hình UPC-E có hiệu lực

BarcodeError Hierarchy (Hiếng định tuyến)

Tất cả các ngoại lệ được thừa hưởng từ BarcodeError, mở rộng phần tích hợp của Python Exception.Hiện học cho phép các khối bắt ở mức độ đặc biệt khác nhau:

ExceptionLớn khi
BarcodeError- Khóa học cơ bản cho tất cả các ngoại lệ thư viện
InvalidInputErrorDữ liệu nhập không xác thực (chữ sai, chiều dài sai)
EncodingErrorLogic mã hóa thất bại sau khi xác thực qua
RenderingErrorRenderer gặp lỗi trong quá trình SVG hoặc PNG xuất phát
SymbologyNotFoundErrorTên biểu tượng không được đăng ký trong SymbologyRegistry
UnsupportedCapabilityErrorMột khả năng yêu cầu không sẵn dùng cho biểu tượng
UnsupportedFeatureErrorMột tính năng được xác định nhưng không thực hiện
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}")

Tên biểu tượng Symbology

SymbologyNotFoundError được nâng lên khi BarcodeService.generate() nhận được một tên biểu tượng không đăng ký.The SymbologyRegistry giải quyết tên bằng tên hoặc alias canonical, do đó "code128", "Code128", và "CODE128" Tất cả đều được giải quyết theo cùng một định nghĩa.

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}")

Kiểm tra Digital Validation

EAN-13, Ean-8, UPC-A, và U PC-E biểu tượng tính toán các số kiểm tự động. Nếu bạn thông qua dữ liệu đầy đủ bao gồm một số xác minh, người phân phối sẽ xác nhận nó chống lại giá trị được tính. allow_check_digit_input Tài sản tại Ean13OptionsEan8Options Kiểm soát hành vi này.

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),
)

Mẹo và Thực hành Tốt nhất

  • Catch InvalidInputError cho các biểu mẫu nhập người dùng nơi dữ liệu có thể không đáp ứng yêu cầu biểu tượng
  • Sử dụng BarcodeError như một catch-all chỉ khi bạn không cần phải phân biệt giữa các loại lỗi
  • Kiểm tra tên biểu tượng đối với bảy biểu diễn được hỗ trợ (code128, code39, ean13, eAN8, qrcode, upca, ups) trước khi gọi generate() để tránh SymbologyNotFoundError
  • Đối với mã QR, set encoding_mode Tự nhiên qua QrOptions Khi dữ liệu chứa các ký tự không ASCII
  • Hãy để thư viện kiểm tra các số thay vì cung cấp chúng bằng tay – điều này ngăn chặn sự bất hợp pháp.

Các vấn đề thường gặp

IssueCauseFix Đặt
InvalidInputError Đánh giá EAN-13Dữ liệu có ít hơn 12 chữ số hoặc chứa các ký tự không số- Đặt chính xác 12 hoặc 13 số
SymbologyNotFoundErrorTên của người biểu tượng (ví dụ:. "code_128" Thay vì "code128")Sử dụng tên canon mà không cần ghi âm
EncodingError Mã 39Dữ liệu chứa các lá thư dưới đây mà không có full_ascii=TrueSet Đặt Code39Options(full_ascii=True)
UnsupportedFeatureErrorLời bài hát: Calling a feature that is defined but not yet implementedCheck known_limitations Trong hồ sơ biểu tượng
InvalidInputError trên UPC-ADữ liệu có hơn 12 chữ số- Đặt chính xác 11 hoặc 12 số

FAQ

Làm thế nào để tôi kiểm tra nếu một tên biểu tượng là hợp lệ trước khi tạo?

Sử dụng BarcodeService.registry để truy cập vào SymbologyRegistry.gọi điện get_definition() và catch SymbologyNotFoundError Nếu tên không được đăng ký.

Tôi có thể vô hiệu hóa xác thực số kiểm tra cho mã thanh EAN không?

Parser luôn xác nhận các số kiểm tra khi bạn cung cấp nhập đầy đủ (13 chữ số cho EAN-13, 8 cho ean-8). Để tránh xác thực, chỉ cung ứng các con số dữ liệu (12 choEAN-13 và 7 cho etan-8) và để thư viện tính toán số check.

Điều gì sẽ xảy ra nếu tôi chuyển dữ liệu nhị phân sang một biểu tượng mã thanh 1D?

InvalidInputError mã 128, mã 39, EAN, và biểu tượng UPC chỉ chấp nhận dữ liệu văn bản. QrEncodeMode.BYTE.

Thư viện có xác nhận chiều dài dữ liệu cho mã QR không?

QrInputParser xác nhận rằng dữ liệu phù hợp với khả năng của phiên bản QR được yêu cầu. nếu không có phiên Bản được chỉ định, thư viện chọn phiên dịch nhỏ nhất chứa các dữ kiện.


Tóm tắt Tham chiếu API

Class / Phương phápDescription
InputParser.parse(data, options)Phương pháp trừu tượng - xác nhận và bình thường hóa input vào NormalizedPayload
Code128InputParser.parse(data, options)Chứng nhận mã 128 ký tự nhập
Code39InputParser.parse(data, options)Chứng nhận mã 39 cơ sở hoặc nhập ASCII đầy đủ
Ean13InputParser.parse(data, options)EAN-13 số tính và kiểm tra số
Ean8InputParser.parse(data, options)- Đánh giá EAN-8 và kiểm tra số
QrInputParser.parse(data, options)Xác định dữ liệu QR chống lại chế độ mã hóa được chọn
UpcaInputParser.parse(data, options)Tính toán UPC-A số lượng
UpceInputParser.parse(data, options)Chứng nhận UPC-E số và mô hình
BarcodeErrorNgoại lệ cơ bản cho thư viện mã thanh
InvalidInputError- Tạo dữ liệu nhập không hợp lệ
EncodingErrorTăng khi mã hóa thất bại
RenderingErrorLấy khi rendering fails
SymbologyNotFoundErrorTăng cho các tên biểu tượng không đăng ký
UnsupportedCapabilityErrorTăng cường khả năng không sẵn dùng
UnsupportedFeatureErrorTạo cho các tính năng chưa thực hiện

See Also

 Tiếng Việt