Gestion des erreurs

Il peut arriver que votre application ne fonctionne pas comme prévu pendant la conception, le test et le déploiement initiaux. Dans ce cas, il peut être utile de mettre en œuvre des méthodes de présentation et de diagnostic des erreurs.

Journaux de console

Lorsque votre application affiche un comportement que vous n’avez pas prévu ou ne comprenez pas, il peut être utile de se référer à une console pour observer le comportement interne de l’application. AppStudio contient une console intégrée (reportez-vous à la rubrique Capture de la sortie de la console pour plus d’informations), et Qt Creator affiche les messages de la console lorsqu’il exécute une application. D'autres informations de console peuvent être fournies via une ligne de code, pour fournir une propriété pouvant être utile ou en tant que panneau indicateur d'une fonction ayant une sortie complexe et pouvant ne pas se comporter correctement.

L'exemple de code suivant imprime dans le journal de console une ligne affichant le nouveau filepath lorsqu'il est changé :

        TextField {
            Layout.fillWidth: true
            text: fileFolder.path
            onEditingFinished: {
                fileFolder.path = text.trim();
                console.log("New filepath:", fileFolder.path);
            }
        }

Pour un support avancé de la console, sous la forme d'une sortie en temps réel et de fichiers journaux, l'API AppFramework AppStudio fournit un composant Consignation avec une série de fonctions apportant une aide et configurant les journaux de console.

Pour démarrer un journal de console, définissez la propriété enabled dans le composant Consignation sur .true Cette propriété peut être définie à l'arrière-plan pour consigner toute la session ou définie via un commutateur ou un bouton pour ne démarrer la consignation que lorsque demandé. Lorsqu'un journal est démarré, il se réfère à la propriété outputLocation pour déterminer l'emplacement et le format de la sortie. Cette destination peut être un chemin d'accès à un fichier, auquel cas l'application générera la sortie dans un fichier journal, ou l'adresse URL d'une console syslog, auquel cas l'application y générera directement la sortie. Le format des messages de journal peut être configuré via la propriété messagePattern.

La propriété messagePattern utilise une série d'espaces réservés pour structurer les informations. Pour afficher les informations voulues dans les messages de console, incluez les espaces réservés suivants :

Emplacement réservéDescription

%{appname}

QCoreApplication::applicationName>()

%{category}

Catégorie Consignation

%{file}

Chemin d'accès au fichier source

%{function}

Fonction

%{line}

Ligne dans le fichier source

%{message}

Message effectif

%{pid}

QCoreApplication::applicationPid()

%{threadid}

ID système du thread actuel (s'il peut être obtenu)

%{qthreadptr}

Pointeur du QThread actuel (résultat de QThread::currentThread()

%{type}

« débogage », « avertissement », « critique » ou « fatal »

%{time process}

Durée du message en secondes depuis le démarrage du processus

%{time boot}

Durée du message en secondes depuis le démarrage du système si cela peut être déterminé

%{time [format]}

Heure système de la réception du message, formatée en communiquant le format à QDateTime::toString()

Ajout de messages d'erreur

Il existe également des erreurs que vous pourrez prévoir et reconnaître mais pas résoudre. Il peut s’agir d’une limitation inévitable de l’application. Par exemple, une application qui requiert un accès constant à un service en ligne ne fonctionnera pas dans un environnement sans accès à Internet. Ceci peut être géré en affichant un message lorsque le signal onError fourni dans de nombreux composants est émis. Certains de ces composants fournissent également des propriétés supplémentaires pour informer l'utilisateur en cas d'erreur, telles que la propriété NetworkRequest errorText.

L'exemple de code suivant indique comment introduire un message d'erreur lorsque la propriété NetworkRequest échoue, avec le message d'erreur affichant l'erreur retournée. Il configure également la demande réseau de manière à ce qu'elle échoue en lui indiquant de faire une demande impossible.

MessageDialog {
    id: messageDialog
    title: "Network error"
    text: "Error code: "  + networkRequest.errorCode + "\n" + networkRequest.errorText
}
NetworkRequest {
    id: networkRequest
    url: "http://appstudio.arcgis.com/images/index/introview.jpg2"
    responseType: "json"
    onError: {
        messageDialog.open();
    }
}
Button {
    id: sendBtn
    text: "Send Request"
    onClicked: {
        networkRequest.send();
    }
}