Bemeneti érvényesítés és hibakezelés

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 van
  • Code39InputParser — ellenőrzi a karaktereket a Code 39 alap- vagy teljes ASCII ábécé szerint, a Code39Options.full_ascii függvényében
  • Ean13InputParser — 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ényel
  • QrInputParser — ellenőrzi az adatokat a kiválasztott QrEncodeMode (NUMERIC, ALPHANUMERIC, BYTE vagy KANJI) alapján
  • UpcaInputParser — pontosan 11 vagy 12 numerikus számjegyet igényel
  • UpceInputParser — 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:

ExceptionKiváltva, ha
BarcodeErrorAz összes könyvtári kivétel alaposztálya
InvalidInputErrorA bemeneti adatok nem felelnek meg az érvényesítésnek (hibás karakterek, hibás hossz)
EncodingErrorA kódolási logika hibát okoz, miután az érvényesítés sikeres
RenderingErrorA renderelő hiba lép fel SVG vagy PNG kimenet közben
SymbologyNotFoundErrorA szimbólum neve nincs regisztrálva a(z) SymbologyRegistry-ban
UnsupportedCapabilityErrorA kért képesség nem elérhető a szimbólumhoz
UnsupportedFeatureErrorEgy 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 InvalidInputError kivé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 a SymbologyNotFoundError hibát.
  • A QR kódok esetén állítsa be a encoding_mode értékét kifejezetten a QrOptions segí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émaOkJavítás
InvalidInputError a EAN-13Az adat kevesebb, mint 12 számjegyet tartalmaz, vagy nem numerikus karaktereket tartalmazAdjon meg pontosan 12 vagy 13 számjegyet
SymbologyNotFoundErrorHibá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 39Az adatok kisbetűket tartalmaznak full_ascii=True nélkülÁllítsa be Code39Options(full_ascii=True)
UnsupportedFeatureErrorEgy olyan funkció meghívása, amely definiálva van, de még nincs megvalósítvaEllenőrizze a known_limitations a szimbólumprofilon
InvalidInputError a UPC-AAz adat több mint 12 számjegyet tartalmazAdjon 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ódusLeí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
BarcodeErrorAlap kivétel a vonalkód könyvtárhoz
InvalidInputErrorKiváltva érvénytelen bemeneti adatok esetén
EncodingErrorKiváltva, ha a kódolás sikertelen
RenderingErrorKiváltva, ha a renderelés sikertelen
SymbologyNotFoundErrorKiváltva nem regisztrált szimbólumnevek esetén
UnsupportedCapabilityErrorKiváltva nem elérhető képességek esetén
UnsupportedFeatureErrorKiváltva nem megvalósított funkciók esetén

Lásd még:

 Magyar