Перевірка введення та обробка помилок

Перевірка введення та обробка помилок

Перевірка введення та обробка помилок

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_ascii
  • Ean13InputParser вимагає точно 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 символи;
  • Нехай бібліотека обчислює перевірки цифр, а не подавати їх вручную це уникає несхожини.

Загальні питання

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 для ЕАН-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Використовується для функцій, які не реалізовані.

See Also

 Українська