Input Validation och Felhantering

Input Validation och Felhantering

Input Validation och Felhantering

Aspose.BarCode FOSS for Python validates all input data before encoding. Each symbology has a dedicated InputParser underklass som kontrollerar teckensnittsinställningar, längdbegränsningar och formatregler. När validering misslyckas lyfter biblioteket ut typade undantag från BarcodeError hierarki så att samtalare kan skilja mellan inputproblem, kodning misslyckanden och rendering problem.


Inputparser lager

Varje symbol registrerar en InputParser genomförandet. när du ringer BarcodeService.generate(), parser kör först, producerar en NormalizedPayload eller öka InvalidInputError om uppgifterna inte är giltiga för den symboliken.

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)

Varje symboliserande parser validerar olika regler:

  • Code128InputParser Kontrollera att alla tecken är i ASCII-området som stöds av kod 128 teckensnitt.
  • Code39InputParser — validera tecken mot kod 39 bas eller full-ASCII alfabetet beroende på Code39Options.full_ascii
  • Ean13InputParser — kräver exakt 12 eller 13 numeriska siffror (13th är checknumret)
  • Ean8InputParser - kräver exakt 7 eller 8 numeriska siffror
  • QrInputParser - validera data mot den valda QrEncodeMode (Numrerisk, alfabetik, byte eller kanji)
  • UpcaInputParser - kräver exakt 11 eller 12 numeriska siffror
  • UpceInputParser — kräver exakt 6, 7 eller 8 numeriska siffror med en giltig UPC-E mönster

BarcodeError Hierarki

Alla undantag ärvdes från BarcodeError,som utökar Python-inbyggda Exception.Hierarki möjliggör catch blocks på olika nivåer av specifikitet:

ExceptionUppväxt när
BarcodeErrorBasklassen för alla bibliotek undantag
InvalidInputErrorInmatningsdata misslyckas med validering (felaktig tecken, fel längd)
EncodingErrorKodning logik misslyckas efter validering passerar
RenderingErrorRenderer upplever ett fel under SVG eller PNG-utgången
SymbologyNotFoundErrorSymboliska namn är inte registrerat i SymbologyRegistry
UnsupportedCapabilityErrorEn begärd kapacitet är inte tillgänglig för symboliken.
UnsupportedFeatureErrorEn funktion definieras men inte genomförs.
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}")

Validerar symboliska namn

SymbologyNotFoundError uppväxter när BarcodeService.generate() får ett symboliskt namn som inte är registrerat. SymbologyRegistry löser namn med kanoniskt namn eller alias, så att "code128", "Code128",och "CODE128" Alla är avgjorda till samma definition.

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

Kontrollera digitala valideringar

EAN-13, Ean-8, UPC-A och U PC-E symboler beräknar kontrollerna automatiskt. Om du överför de fullständiga data inklusive en checknummer, verifierar parseren det mot den berättigade värdet. allow_check_digit_input Fastigheten på Ean13Options och Ean8Options Kontrollera detta beteende.

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

Tips och bästa praxis

  • Catch InvalidInputError för användarvänliga inmatningsformulär där data kanske inte uppfyller symbolikkraven
  • Användning BarcodeError som en catch-all endast när du inte behöver skilja mellan feltyper
  • Kontrollera symbolens namn mot de sju stödda symbolerna (code128, code39, ean13, eAN8, qrcode, upca, Upce) innan du ringer generate() att undvika SymbologyNotFoundError
  • För QR-koder, ställ in encoding_mode Uttryckligen via QrOptions När uppgifterna innehåller icke-ASCII-karaktärer
  • Låt biblioteket räkna ut siffror istället för att leverera dem manuellt – detta undviker missmatchningar.

Vanliga frågor

IssueCauseFixar
InvalidInputError på EAN-13Data har mindre än 12 siffror eller innehåller icke-numrerade tecken.Leverera exakt 12 eller 13 numeriska siffror
SymbologyNotFoundErrorTyp i symboliska namn (t.ex. "code_128" I stället för "code128")Använd det kanoniska namnet utan underskor
EncodingError i koden 39Data innehåller lägre brev utan full_ascii=TrueSetade Code39Options(full_ascii=True)
UnsupportedFeatureErrorKallande en funktion som är definierad men inte implementerad ännuCheck known_limitations På symboliska profil
InvalidInputError på UPC-AData har mer än 12 siffrorLeverera exakt 11 eller 12 numeriska siffror

FAQ

Hur kan jag kontrollera om ett symboliskt namn är giltigt innan generering?

Användning BarcodeService.registry för att komma åt den SymbologyRegistry.- ringa get_definition() och catch SymbologyNotFoundError om namnet inte är registrerat.

Kan jag inaktivera verifiering av digitala valideringar för EAN-barkoder?

Parseren validerar alltid checkdatorer när du levererar full längdsinträngningen (13 siffror för EAN-13, 8 för ean-8). För att undvika validering, leverera endast data-digiterna (12 förEAN-13 och 7 för etan-8) och låt biblioteket beräkna checkdiagrammet.

Vad händer om jag överför binära data till en 1D-barkodsymbol?

InvalidInputError koden 128, kod 39, EAN och UPC symboler accepterar endast textdata. för binära data, använd QR-kod med QrEncodeMode.BYTE.

Validerar biblioteket data längd för QR-koder?

QrInputParser bekräftar att data passar inom kapaciteten för den begärda QR-versionen.Om ingen version anges väljer biblioteket den minsta version som matchar uppgifterna.


API Referens sammanfattning

Klass / MetodBeskrivning
InputParser.parse(data, options)Abstrakt metod – validerar och normaliserar input in i NormalizedPayload
Code128InputParser.parse(data, options)Validerar kod 128 inmatning tecken
Code39InputParser.parse(data, options)Validerar kod 39 bas eller full ASCII input
Ean13InputParser.parse(data, options)Validerar EAN-13 siffra räkning och check siffer
Ean8InputParser.parse(data, options)Validerar EAN-8-digit räkning och checkdikt
QrInputParser.parse(data, options)Validerar QR-data mot det valda kodläget
UpcaInputParser.parse(data, options)Validerar UPC-A siffra räkning
UpceInputParser.parse(data, options)Validerar UPC-E siffra och mönster
BarcodeErrorBasexception för barkodbiblioteket
InvalidInputErrorUppsatta för olagliga inmatningsdata
EncodingErrorUpphöjd när kodning misslyckas
RenderingErrorUpphöjd när rendering misslyckas
SymbologyNotFoundErrorUppsatt för obegränsade symboliska namn
UnsupportedCapabilityErrorUpphöjd för oförutsedda kapaciteter
UnsupportedFeatureErrorUppbyggd för oanvända funktioner

Se även

 Svenska