Bemeneti érvényesítés és hibakezelés
Bemeneti Érvényesítés és Hibakezelés
Aspose.BarCode FOSS for Python ellenőrzi az összes bemeneti adatot a kódolás előtt. Minden szimbólumsorozat rendelkezik egy dedikált InputParser alosztállyal, amely ellenőrzi a karakterkészleteket, a hosszkorlátokat és a formátumszabályokat. Ha az érvényesítés sikertelen, a könyvtár típusos kivételeket dob a BarcodeError hierarchiából, hogy a hívók megkülönböztethessék a bemeneti problémákat, a kódolási hibákat és a megjelenítési problémákat.
A InputParser réteg
Minden szimbólumsorozat regisztrál egy InputParser megvalósítást. Amikor meghívod a BarcodeService.generate(), a parser először fut, és egy NormalizedPayload hoz létre, vagy InvalidInputError dob, ha az adat nem érvényes az adott szimbólumsorozathoz.
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)Minden szimbólumsorozat-elemző különböző szabályokat ellenőriz:
Code128InputParser— ellenőrzi, hogy minden karakter a Code 128 karakterkészletek által támogatott ASCII tartományon belül vanCode39InputParser— ellenőrzi a karaktereket a Code 39 alap- vagy teljes ASCII ábécé szerint, aCode39Options.full_asciifüggvényébenEan13InputParser— pontosan 12 vagy 13 numerikus számjegyet igényel (a 13. az ellenőrző számjegy)Ean8InputParser— pontosan 7 vagy 8 numerikus számjegyet igényelQrInputParser— ellenőrzi az adatokat a kiválasztottQrEncodeMode(NUMERIC, ALPHANUMERIC, BYTE vagy KANJI) alapjánUpcaInputParser— pontosan 11 vagy 12 numerikus számjegyet igényelUpceInputParser— pontosan 6, 7 vagy 8 numerikus számjegyet igényel egy érvényes UPC-E mintával
A BarcodeError hierarchia
Minden kivétel örökli a BarcodeError osztályt, amely kiterjeszti a Python beépített Exception osztályát. A hierarchia lehetővé teszi a catch blokkokat különböző szintű specifikussággal:
| Exception | Kiváltva, ha |
|---|---|
BarcodeError | Az összes könyvtári kivétel alaposztálya |
InvalidInputError | A bemeneti adatok nem felelnek meg az érvényesítésnek (hibás karakterek, hibás hossz) |
EncodingError | A kódolási logika hibát okoz, miután az érvényesítés sikeres |
RenderingError | A renderelő hiba lép fel SVG vagy PNG kimenet közben |
SymbologyNotFoundError | A szimbólum neve nincs regisztrálva a(z) SymbologyRegistry-ban |
UnsupportedCapabilityError | A kért képesség nem elérhető a szimbólumhoz |
UnsupportedFeatureError | Egy funkció definiálva van, de nincs implementálva |
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}")Szimbólumnevek ellenőrzése
SymbologyNotFoundError akkor kerül kivételként dobásra, amikor BarcodeService.generate() egy nem regisztrált szimbólumnévvel találkozik. A SymbologyRegistry kanonikus név vagy alias alapján oldja fel a neveket, így "code128", "Code128" és "CODE128" mind ugyanarra a definícióra mutatnak.
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}")Ellenőrző számjegy ellenőrzése
EAN-13, EAN-8, UPC-A és UPC-E szimbólumok automatikusan számítják ki az ellenőrző számjegyet. Ha a teljes adatot, beleértve az ellenőrző számjegyet is, átadja, a parser ellenőrzi azt a kiszámított értékkel szemben. A allow_check_digit_input tulajdonság a Ean13Options és a Ean8Options esetén szabályozza ezt a viselkedést.
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),
)Tippek és bevált gyakorlatok
- Kapja el a
InvalidInputErrorkivételt olyan felhasználó felé irányuló űrlapoknál, ahol az adatok esetleg nem felelnek meg a szimbólumkövetelményeknek. - Használja a
BarcodeErroráltalános elkapóként csak akkor, ha nem kell megkülönböztetni a hibatípusokat. - Ellenőrizze a szimbólumnév megfelelőségét a hét támogatott szimbólum (code128, code39, ean13, ean8, qrcode, upca, upce) között, mielőtt meghívná a
generate()függvényt, hogy elkerülje aSymbologyNotFoundErrorhibát. - A QR kódok esetén állítsa be a
encoding_modeértékét kifejezetten aQrOptionssegítségével, ha az adat nem ASCII karaktereket tartalmaz. - Engedje meg a könyvtárnak, hogy kiszámolja az ellenőrző számjegyeket ahelyett, hogy kézzel adná meg őket — ez elkerüli az eltéréseket
Általános problémák
| Probléma | Ok | Javítás |
|---|---|---|
InvalidInputError a EAN-13 | Az adat kevesebb, mint 12 számjegyet tartalmaz, vagy nem numerikus karaktereket tartalmaz | Adjon meg pontosan 12 vagy 13 számjegyet |
SymbologyNotFoundError | Hibás írás a szimbólumnévben (pl. "code_128" a "code128" helyett) | Használja a kanonikus nevet aláhúzások nélkül |
EncodingError a Code 39 | Az adatok kisbetűket tartalmaznak full_ascii=True nélkül | Állítsa be Code39Options(full_ascii=True) |
UnsupportedFeatureError | Egy olyan funkció meghívása, amely definiálva van, de még nincs megvalósítva | Ellenőrizze a known_limitations a szimbólumprofilon |
InvalidInputError a UPC-A | Az adat több mint 12 számjegyet tartalmaz | Adjon meg pontosan 11 vagy 12 számjegyet |
FAQ
Hogyan ellenőrizhetem, hogy egy szimbólumnév érvényes-e a generálás előtt?
Használja a(z) BarcodeService.registry elemet a(z) SymbologyRegistry eléréséhez. Hívja meg a(z) get_definition() függvényt, és kezelje a(z) SymbologyNotFoundError kivételt, ha a név nincs regisztrálva.
Letilthatom az ellenőrző számjegy-ellenőrzést az EAN vonalkódoknál?
A parser mindig ellenőrzi az ellenőrző számjegyeket, ha a teljes hosszúságú bemenetet adja meg (13 számjegy a(z) EAN-13 esetén, 8 a(z) EAN-8 esetén). Az ellenőrzés elkerüléséhez adja meg csak az adat számjegyeket (12 a(z) EAN-13 esetén, 7 a(z) EAN-8 esetén), és hagyja, hogy a könyvtár számolja ki az ellenőrző számjegyet.
Mi történik, ha bináris adatot adok át egy 1D vonalkód szimbólumnak?
InvalidInputError kivétel keletkezik. Code 128, Code 39, EAN és UPC szimbólumok csak szöveges adatokat fogadnak el. Bináris adatokhoz használja a QR Code-t a QrEncodeMode.BYTE segítségével.
Ellenőrzi a könyvtár az adat hosszát a QR kódok esetén?
QrInputParser ellenőrzi, hogy az adat belefér-e a kért QR verzió kapacitásába. Ha nincs verzió megadva, a könyvtár a legkisebb, az adatot befogadó verziót választja.
API Reference összegzés
| Osztály / Metódus | Leírás |
|---|---|
InputParser.parse(data, options) | Absztrakt metódus — érvényesíti és normalizálja a bemenetet a NormalizedPayload típusba |
Code128InputParser.parse(data, options) | Érvényesíti a Code 128 bemeneti karaktereket |
Code39InputParser.parse(data, options) | Érvényesíti a Code 39 alap vagy teljes ASCII bemenetet |
Ean13InputParser.parse(data, options) | Érvényesíti a EAN-13 számjegyszámot és ellenőrző számot |
Ean8InputParser.parse(data, options) | Érvényesíti a EAN-8 számjegyszámot és ellenőrző számot |
QrInputParser.parse(data, options) | Érvényesíti a QR adatokat a kiválasztott kódolási mód szerint |
UpcaInputParser.parse(data, options) | Érvényesíti a UPC-A számjegyszámot |
UpceInputParser.parse(data, options) | Érvényesíti a UPC-E számjegyek számát és mintáját |
BarcodeError | Alap kivétel a vonalkód könyvtárhoz |
InvalidInputError | Kiváltva érvénytelen bemeneti adatok esetén |
EncodingError | Kiváltva, ha a kódolás sikertelen |
RenderingError | Kiváltva, ha a renderelés sikertelen |
SymbologyNotFoundError | Kiváltva nem regisztrált szimbólumnevek esetén |
UnsupportedCapabilityError | Kiváltva nem elérhető képességek esetén |
UnsupportedFeatureError | Kiváltva nem megvalósított funkciók esetén |