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:
Code128InputParserKontrollera 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_asciiEan13InputParser— kräver exakt 12 eller 13 numeriska siffror (13th är checknumret)Ean8InputParser- kräver exakt 7 eller 8 numeriska siffrorQrInputParser- validera data mot den valdaQrEncodeMode(Numrerisk, alfabetik, byte eller kanji)UpcaInputParser- kräver exakt 11 eller 12 numeriska siffrorUpceInputParser— 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:
| Exception | Uppväxt när |
|---|---|
BarcodeError | Basklassen för alla bibliotek undantag |
InvalidInputError | Inmatningsdata misslyckas med validering (felaktig tecken, fel längd) |
EncodingError | Kodning logik misslyckas efter validering passerar |
RenderingError | Renderer upplever ett fel under SVG eller PNG-utgången |
SymbologyNotFoundError | Symboliska namn är inte registrerat i SymbologyRegistry |
UnsupportedCapabilityError | En begärd kapacitet är inte tillgänglig för symboliken. |
UnsupportedFeatureError | En 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
InvalidInputErrorför användarvänliga inmatningsformulär där data kanske inte uppfyller symbolikkraven - Användning
BarcodeErrorsom 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 undvikaSymbologyNotFoundError - För QR-koder, ställ in
encoding_modeUttryckligen viaQrOptionsNä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
| Issue | Cause | Fixar |
|---|---|---|
InvalidInputError på EAN-13 | Data har mindre än 12 siffror eller innehåller icke-numrerade tecken. | Leverera exakt 12 eller 13 numeriska siffror |
SymbologyNotFoundError | Typ i symboliska namn (t.ex. "code_128" I stället för "code128") | Använd det kanoniska namnet utan underskor |
EncodingError i koden 39 | Data innehåller lägre brev utan full_ascii=True | Setade Code39Options(full_ascii=True) |
UnsupportedFeatureError | Kallande en funktion som är definierad men inte implementerad ännu | Check known_limitations På symboliska profil |
InvalidInputError på UPC-A | Data har mer än 12 siffror | Leverera 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 / Metod | Beskrivning |
|---|---|
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 |
BarcodeError | Basexception för barkodbiblioteket |
InvalidInputError | Uppsatta för olagliga inmatningsdata |
EncodingError | Upphöjd när kodning misslyckas |
RenderingError | Upphöjd när rendering misslyckas |
SymbologyNotFoundError | Uppsatt för obegränsade symboliska namn |
UnsupportedCapabilityError | Upphöjd för oförutsedda kapaciteter |
UnsupportedFeatureError | Uppbyggd för oanvända funktioner |