Перевірка введення та обробка помилок
Перевірка введення та обробка помилок
Aspose.BarCode FOSS for Python validates all input data before encoding. Each symbology has a dedicated InputParser Підклас, який перевіряє набори символів, обмеження довжини та правила форматизації. Коли валідація не вдається, бібліотека піднімає винятки з класу. BarcodeError ієрархію, щоб покликанці могли розрізняти проблеми введення даних, невдачі кодування та проблеми з рендеруванням.
Слой InputParser
Кожна символіка реєструє InputParser Виконання. Коли ви називаєте BarcodeService.generate(), перше виконується аналізатор, що дає результат: 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, який підтримується наборами знаків код 128.Code39InputParserпідтверджує знаки за базою коду 39 або повним алфавітом ASCII, в залежності від:Code39Options.full_asciiEan13InputParserвимагає точно 12 або 13 цифр (13 - це перевірка)Ean8InputParserвимагає точно 7 або 8 цифр.QrInputParserпідтверджує дані проти обраних даних.QrEncodeMode(НУМЕРІЧЕСКИЙ, АЛФАНУМІРІчний, БЮТЕВСКІЙ або КАНДЖІ)UpcaInputParserвимагає точно 11 або 12 цифр.UpceInputParserвимагає точно 6, 7 або 8 цифр з дійсним UPC-E шаблоном.
Ієрархія помилок штрих-кода
Всі винятки походять від BarcodeError, що розширює вбудовані Python Exception.Ієрархія дозволяє використовувати блоки з різних рівнів специфічності:
| Exception | Коли виховували? |
|---|---|
BarcodeError | Базовий клас для всіх виняток бібліотеки |
InvalidInputError | Недосягнення дійсність введеного даних (неправильні символи, неправильна довжина) |
EncodingError | Логіка кодування не працює після проходження валідації |
RenderingError | Рендер зустрічає помилку під час виходу 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як загальний примірник тільки тоді, коли не потрібно розрізняти типи помилок. - Перевірте назву симвології з сім підтримуваних символіки (код128, код39, ean13, eAN8, qrcode, upca, Upce) перед закликанням.
generate()уникнутиSymbologyNotFoundError - Для QR-кодів, набір
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 для ЕАН-8). Щоб уникнути перевірності, введіть тільки цифри даних (12 для ЭАН-14, 7 для ЄАНК-8) і дайте бібліотеці обчислювати цифру перегляду.
Що станеться, якщо я передам двоякі дані в 1D символіку штрих-коду?
InvalidInputError Код 128, код 39, EAN та UPC символіки приймають лише текстові дані. Для двоякісних даних використовуйте QR-код з QrEncodeMode.BYTE.
Чи підтверджує бібліотека довжину даних для QR-кодів?
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 | Використовується для функцій, які не реалізовані. |