IRONSOFTWAREHOME

Comment gérer les messages d'erreur des codes QR en C#

Curtis Chau
Curtis Chau
Updated: 9 mai 2026

La gestion des erreurs d'IronQR vous aide à détecter les échecs de lecture et d'écriture, à consigner les diagnostics et à obtenir des résultats clairs pour chaque analyse. Si vous n'ajoutez pas de vérifications explicites, un résultat vide comme un fichier corrompu ne renverront rien, vous ne saurez donc pas ce qui s'est mal passé. En ajoutant une gestion ciblée des exceptions et une journalisation des diagnostics, vous pouvez transformer les défaillances silencieuses en retours d'information utiles. Ce guide explique comment gérer les résultats vides, gérer les exceptions d'écriture et créer un wrapper de journalisation structurée pour le traitement par lots.

Démarrage rapide : Gérer les erreurs de code QR

Enveloppez les opérations de lecture QR dans un bloc try-catch et enregistrez les diagnostics pour les échecs de fichier et de décodage.

  1. 1Install IronQR with NuGet Package Manager

    PM > Install-Package IronQR

  2. 2Copiez et exécutez cet extrait de code.

    using IronQr;
    using IronSoftware.Drawing;
    
    try
    {
        var input = new QrImageInput(AnyBitmap.FromFile("label.png"));
        var results = new QrReader().Read(input);
        Console.WriteLine($"Found {results.Count()} QR code(s)");
    }
    catch (IOException ex)
    {
        Console.Error.WriteLine($"File error: {ex.Message}");
    }
    C#
  3. 3Déployez pour tester sur votre environnement de production.

    Commencez à utiliser IronQR dans votre projet dès aujourd'hui avec un essai gratuit
    arrow pointer

Gestion des erreurs de lecture et des résultats vides

Sans journalisation, un résultat vide et un fichier corrompu apparaissent identiques à l'appelant. L'exemple suivant détecte les échecs d'accès aux fichiers et émet un avertissement si l'analyse ne renvoie aucun résultat.

Entrée

Cet exemple de saisie QR existe sur disque. Nous allons simuler les deux scénarios : l'un où l'utilisateur récupère et décode le fichier, et l'autre où le chemin d'accès au fichier est incorrect.

Encodage de code QR valide : https://ironsoftware.com/qr/scan-1
using IronQr;
using IronSoftware.Drawing;

string filePath = "damaged-scan.png";

try
{
    // File-level failure throws IOException or FileNotFoundException
    var inputBmp = AnyBitmap.FromFile(filePath);
    var imageInput = new QrImageInput(inputBmp);

    var reader = new QrReader();
    IEnumerable<QrResult> results = reader.Read(imageInput);

    if (!results.Any())
    {
        // Not an exception — but a diagnostic event worth logging
        Console.Error.WriteLine($"[WARN] No QR codes found in: {filePath}");
        Console.Error.WriteLine($"  Action: Verify image quality or try a different scan");
    }
    else
    {
        foreach (QrResult result in results)
        {
            Console.WriteLine($"[{result.QrType}] {result.Value}");
        }
    }
}
catch (FileNotFoundException)
{
    Console.Error.WriteLine($"[ERROR] File not found: {filePath}");
}
catch (IOException ex)
{
    Console.Error.WriteLine($"[ERROR] Cannot read file: {filePath}{ex.Message}");
}
catch (Exception ex)
{
    Console.Error.WriteLine($"[ERROR] Unexpected failure reading {filePath}: {ex.GetType().Name}{ex.Message}");
}

Sortie

Affichage du terminal : [QRCode] https://ironsoftware.com/qr/scan-1 pour une lecture de code QR réussie
Veuillez noter: Une lecture réussie ne ferait que renvoyer la valeur du code QR, tandis qu'une erreur pendant l'exécution montrerait le message d'exception ou les avertissements montrés ci-dessous.

La console ci-dessous montre un [WARN] pour le cas de résultat vide et un [ERROR] pour le fichier manquant, avec le chemin du fichier et une action suggérée pour chacun.

Sortie du terminal affichant un AVERTISSEMENT : aucun code QR trouvé dans damage-scan.png et une ERREUR : fichier introuvable pour missing-label.png

Gestion des échecs d'écriture

Passer null à QrWriter.Write déclenche un IronQrEncodingException. Les données qui dépassent la capacité du niveau de correction d'erreurs configuré génèrent également une erreur, car des niveaux de correction plus élevés réduisent la capacité de données disponible.

Entrée

Les deux variables d'entrée ci-dessous définissent les scénarios d'échec : nullContent est null et oversizedContent est une chaîne de 5 000 caractères qui dépasse la capacité du QR au niveau de correction le plus élevé.

using IronQr;

string? content = null; // null throws IronQrEncodingException 
string oversizedContent = new string('A', 5000); // 5,000 chars exceeds QR capacity at Highest error correction level 

// Scenario 1: null input
try
{   
    QrCode qr = QrWriter.Write(content); // Input
}
catch (Exception ex)
{
    Console.Error.WriteLine($"[ERROR] Null content: {ex.GetType().Name}{ex.Message}"); // Output
}

// Scenario 2: data exceeds QR capacity at the configured error correction level
try
{
    var options = new QrOptions(QrErrorCorrectionLevel.Highest);
    QrCode qr = QrWriter.Write(oversizedContent, options); // Input
}
catch (Exception ex)
{
    Console.Error.WriteLine($"[ERROR] QR capacity exceeded: {ex.Message}"); // Output
    Console.Error.WriteLine($"  Input length: {oversizedContent.Length} chars");
    Console.Error.WriteLine($"  Action: Reduce content or lower error correction level");
}

Sortie

La console affiche le type d'exception et le message pour les deux scénarios d'échec.

Sortie du terminal affichant une exception IronQrEncodingException pour un contenu nul transmis à QrWriter.Write

Consignez la longueur de l'entrée avec le message d'exception afin d'identifier si le problème nécessite un contenu plus court ou un niveau de correction inférieur. Pour les entrées utilisateur, validez la longueur de la chaîne et vérifiez les valeurs nulles avant l'encodage afin de réduire la surcharge liée aux exceptions et d'améliorer les diagnostics.


Enregistrement des opérations de code QR

Utilisez IronSoftware.Logger pour capturer les diagnostics internes. Pour chaque opération de lecture, implémentez une fonction auxiliaire qui enregistre le chemin du fichier, le nombre de résultats et le temps écoulé au format JSON afin de garantir une sortie claire pour l'ensemble du lot.

Entrée

Le lot comprend quatre images de codes QR valides de qr-scans/ et un cinquième fichier, scan-05-broken.png, avec des octets non valides.

QR code encodant https://ironsoftware.com/qr/scan-1

Numérisation 1

QR code encodant https://ironsoftware.com/qr/scan-2

Scanner 2

QR code encodant https://ironsoftware.com/qr/scan-3

Scanner 3

QR code encodant https://ironsoftware.com/qr/scan-4

Scanner 4

using IronQr;
using IronSoftware.Drawing;
using System.Diagnostics;

// Enable shared Iron Software logging for internal diagnostics
IronQr.Logging.Logger.LoggingMode = IronQr.Logging.Logger.LoggingModes.All;
IronQr.Logging.Logger.LogFilePath = "ironqr-debug.log";

// Reusable wrapper for structured observability
(IEnumerable<QrResult> Results, bool Success, string Error) ReadQrWithDiagnostics(string filePath)
{
    var sw = Stopwatch.StartNew();
    try
    {
        var input = new QrImageInput(AnyBitmap.FromFile(filePath));
        var results = new QrReader().Read(input).ToList();
        sw.Stop();

        Console.WriteLine($"{{\"op\":\"qr_read\",\"file\":\"{Path.GetFileName(filePath)}\","
            + $"\"status\":\"ok\",\"count\":{results.Count},\"ms\":{sw.ElapsedMilliseconds}}}");

        return (results, true, null);
    }
    catch (Exception ex)
    {
        sw.Stop();
        string error = $"{ex.GetType().Name}: {ex.Message}";

        Console.Error.WriteLine($"{{\"op\":\"qr_read\",\"file\":\"{Path.GetFileName(filePath)}\","
            + $"\"status\":\"error\",\"exception\":\"{ex.GetType().Name}\","
            + $"\"message\":\"{ex.Message}\",\"ms\":{sw.ElapsedMilliseconds}}}");

        return (Enumerable.Empty<QrResult>(), false, error);
    }
}

// Usage: process a batch with per-file isolation
string[] files = Directory.GetFiles("qr-scans/", "*.png");
int ok = 0, fail = 0;

foreach (string file in files)
{
    var (results, success, error) = ReadQrWithDiagnostics(file);
    if (success && results.Any()) ok++;
    else fail++;
}

Console.WriteLine($"\nBatch complete: {ok} success, {fail} failed/empty out of {files.Length} files");
C#

Sortie

La console affiche les lignes de journal JSON pour chaque fichier : quatre lectures réussies et une entrée d'erreur structurée pour le fichier corrompu, suivies du résumé du lot. IronSoftware.Logger écrit les diagnostics internes sur IronQR-debug.log en même temps. Vous pouvez télécharger le journal de débogage complet ici.

Sortie du terminal affichant les lignes de journal structurées au format JSON pour 4 lectures réussies et 1 erreur, Plus résumé de la fin du traitement par lots.

La sortie JSON alimente directement les outils d'agrégation de journaux : canalisez stdout vers Fluentd, Datadog ou CloudWatch dans un déploiement en conteneurs. Le champ ms met en évidence les régressions de latence, et le journal de débogage capture les étapes de traitement internes que l'enveloppeur ne capture pas.


Lecture supplémentaire

Consultez les options de licence lorsque vous serez prêt pour la production.

Cliquez ici pour télécharger le projet complet d'application console DetailedErrorMessagesTest.

Questions Fréquemment Posées

Comment puis-je déboguer les opérations de lecture/écriture de code QR en C# ?

Vous pouvez déboguer les opérations de lecture/écriture de code QR en C# en utilisant IronQR en interceptant les exceptions, en enregistrant les diagnostics et en surveillant le traitement par lots avec une sortie structurée.

Que dois-je faire si je rencontre une erreur lors du traitement des codes QR en C# ?

Si vous rencontrez une erreur lors du traitement des codes QR en C#, utilisez IronQR pour intercepter et gérer les exceptions. Cela vous permettra d'identifier et de résoudre les problèmes efficacement.

Comment IronQR aide-t-il à la surveillance du traitement par lots des codes QR ?

IronQR aide à la surveillance du traitement par lots des codes QR en fournissant une sortie structurée, ce qui aide à identifier et à résoudre les erreurs ou inefficacités durant le processus.

IronQR peut-il enregistrer les diagnostics pour les opérations de code QR ?

Oui, IronQR peut enregistrer les diagnostics pour les opérations de code QR, vous permettant de suivre et d'analyser la performance et les erreurs dans vos applications C#.

Quelles sont les exceptions courantes dans le traitement des codes QR avec IronQR ?

Les exceptions courantes dans le traitement des codes QR avec IronQR incluent les problèmes liés aux codes QR illisibles et à la gestion incorrecte du format, qui peuvent être gérés par une gestion appropriée des exceptions dans votre code C#.

How can I improve error detection during QR code processing with IronQR?

Improve error detection by implementing logging that captures detailed information on file paths, operation status, result counts, and execution time. This data supports easier debugging and system observability.

Can IronQR's logging output be integrated with log aggregation tools?

Yes, the JSON output from IronQR can be fed directly into log aggregation tools such as Fluentd, Datadog, or CloudWatch, making it suitable for containerized deployments and enhancing monitoring capabilities.

What approach does IronQR suggest for handling batch QR code operations?

IronQR recommends processing each file in isolation, logging the results for each read operation to help identify errors, and providing a complete batch summary that tallies successes and failures.

How does IronQR assist in diagnosing file-level failures during QR code scans?

IronQR detects file-level failures like IOException and FileNotFoundException, providing descriptive error messages which can be logged to pinpoint issues such as incorrect file paths or unreadable files.

Why is it important to wrap QR read/write calls in try-catch blocks?

Wrapping read/write operations in try-catch blocks ensures that failures do not crash the application, allowing you to handle exceptions gracefully, log necessary diagnostics, and guide the user with useful messages.

Curtis Chau
Rédacteur technique

Curtis Chau détient un baccalauréat en informatique (Université de Carleton) et se spécialise dans le développement front-end avec expertise en Node.js, TypeScript, JavaScript et React. Passionné par la création d'interfaces utilisateur intuitives et esthétiquement plaisantes, Curtis aime travailler avec des frameworks modernes et créer des manuels bien structurés et visuellement attrayants.

...
Lire la suite

Prêt à commencer?

Nuget Downloads 74,386Version :2026.9vient de sortir

Obtenez votre clé d'essai 30 jours gratuitement.
Aucune carte de crédit ou création de compte requise
Bibliothèque C# NuGet pour PDF
Installer avec NuGet

Version : 2026.9

PM > Install-Package IronQR
nuget.org/packages/IronQR/
  1. Dans l'explorateur de solutions, faites un clic droit sur Références, Gestion des packages NuGet
  2. Sélectionnez Parcourir et recherchez « IronQR »
  3. Sélectionnez le package et installez
C# PDF DLL
Télécharger DLL

Version : 2026.9

  1. Téléchargez et décompressez IronQR à un emplacement tel que ~/Libs dans votre répertoire de Solution
  2. Dans Visual Studio Solution Explorer, cliquez avec le bouton droit sur Références. Sélectionnez Parcourir, « IronQR.dll »

Licences à partir de 749 $

Vous avez une question ? Contactez notre équipe de développement.

Key in blue circle

Obtenez votre clé d'essai de 30 jours instantanément.

Your trial license will be sent to your email address

Aucune restriction. 100 % débloqué. Pas de carte bancaire.

bullet_checkedAucune carte de crédit ou création de compte requiseAucune restriction. 100 % débloqué. Pas de carte bancaire.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
Réservez votre Démonstration en direct gratuite
Booking Badge

De confiance par des millions d'ingénieurs dans le monde entier

Logos des clients d'Iron Software
Obtenez Votre Consultation sans Engagement
Remplissez le formulaire ci-dessous ou envoyez un email à sales@ironsoftware.com
Vos informations seront toujours gardées confidentielles.
De confiance par des millions d'ingénieurs dans le monde entier
Logos des clients d'Iron Software
Obtenez votre clé d'essai 30 jours gratuitement.
Aucune carte de crédit ou création de compte requise