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_asciiEan13InputParser- 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ọnQrEncodeMode(Đ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:
| Exception | Lớn khi |
|---|---|
BarcodeError | - Khóa học cơ bản cho tất cả các ngoại lệ thư viện |
InvalidInputError | Dữ liệu nhập không xác thực (chữ sai, chiều dài sai) |
EncodingError | Logic mã hóa thất bại sau khi xác thực qua |
RenderingError | Renderer gặp lỗi trong quá trình SVG hoặc PNG xuất phát |
SymbologyNotFoundError | Tên biểu tượng không được đăng ký trong SymbologyRegistry |
UnsupportedCapabilityError | Một khả năng yêu cầu không sẵn dùng cho biểu tượng |
UnsupportedFeatureError | Mộ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 Ean13Options và Ean8Options 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
InvalidInputErrorcho 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
BarcodeErrornhư 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ánhSymbologyNotFoundError - Đối với mã QR, set
encoding_modeTự nhiên quaQrOptionsKhi 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
| Issue | Cause | Fix Đặt |
|---|---|---|
InvalidInputError Đánh giá EAN-13 | Dữ 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ố |
SymbologyNotFoundError | Tê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ã 39 | Dữ liệu chứa các lá thư dưới đây mà không có full_ascii=True | Set Đặt Code39Options(full_ascii=True) |
UnsupportedFeatureError | Lời bài hát: Calling a feature that is defined but not yet implemented | Check known_limitations Trong hồ sơ biểu tượng |
InvalidInputError trên UPC-A | Dữ 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áp | Description |
|---|---|
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 |
BarcodeError | Ngoại lệ cơ bản cho thư viện mã thanh |
InvalidInputError | - Tạo dữ liệu nhập không hợp lệ |
EncodingError | Tăng khi mã hóa thất bại |
RenderingError | Lấy khi rendering fails |
SymbologyNotFoundError | Tăng cho các tên biểu tượng không đăng ký |
UnsupportedCapabilityError | Tăng cường khả năng không sẵn dùng |
UnsupportedFeatureError | Tạo cho các tính năng chưa thực hiện |