Administración de errores

En ocasiones, es posible que su aplicación no funcione de la forma esperada durante el diseño inicial, la prueba o la implementación. Cuando esto ocurra, puede resultar útil implementar formas de presentar y diagnosticar errores.

Registros de consola

Cuando su aplicación se comporte de una forma que no espera o no entiende, puede resultarle útil consultar una consola para observar lo que la aplicación está haciendo internamente. AppStudio contiene una consola integrada (consulte Capturar salida de consola para obtener más información) y Qt Creator muestra mensajes de consola cuando una aplicación se ejecuta en él. Se puede obtener información adicional de consola mediante una línea de código, ya sea para proporcionar una propiedad que pueda ser útil o como un indicador para una función con una salida compleja que puede que no funcione correctamente.

La siguiente muestra de código imprime una línea en el registro de la consola mostrando la nueva filepath cuando se modifica:

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

Para un soporte de consola más detallado, en forma tanto de salida activa como de archivos de registro, el AppFramework de AppStudio proporciona un componente de registro con una serie de funciones destinadas a ayudar con los registros de consola y configurarlos.

Para iniciar un registro de consola, cambie la propiedad enabled en el componente de registro a true. Se puede ajustar en el fondo para registrar la sesión completa o ajustar a través de un interruptor o botón para poner en marcha el registro solo cuando se solicite. Cuando se inicia un registro, consulta la propiedad outputLocation para determinar la ubicación y la forma en la que saldrá. Este destino puede ser o bien una ruta de archivo, en cuyo caso la aplicación creará y saldrá en un archivo de registro, o la URL de una consola de registro del sistema, en cuyo caso la aplicación saldrá directamente ahí. El formato de los mensajes de registro se puede configurar a través de la propiedad messagePattern.

La propiedad messagePattern utiliza una serie de marcadores de posición para estructurar información. Para mostrar la información deseada en los mensajes de la consola, incluya los siguientes marcadores de posición:

Marcador de posiciónDescripción

%{appname}

QCoreApplication::applicationName>()

%{category}

Categoría de registro

%{file}

Ruta al archivo de origen

%{function}

Función

%{line}

Línea en el archivo de origen

%{message}

El mensaje actual

%{pid}

QCoreApplication::applicationPid()

%{threadid}

El Id. del hilo actual para todo el sistema (si se puede obtener)

%{qthreadptr}

Un puntero para el QThread actual (resultado de QThread::currentThread()

%{type}

"depuración", "advertencia", "crítico" o "fatal"

%{time process}

Tiempo del mensaje, en segundos, desde que comenzó el proceso

%{time boot}

Tiempo del mensaje, en segundos, desde el arranque del sistema si se puede determinar

%{time [format]}

Hora del sistema a la que apareció el mensaje, formateado pasando el formato a QDateTime::toString()

Agregar mensajes de error

También hay errores que podrá predecir y reconocer, pero no podrá resolver. Podría deberse a una limitación inevitable de la aplicación; por ejemplo, una aplicación que requiere acceso constante a un servicio en línea no funcionará en un entorno sin acceso a Internet. Esto se puede gestionar mostrando un mensaje cuando se emita la señal onError proporcionada muchos componentes. Algunos de estos componentes también ofrecen propiedades adicionales para informar al usuario en caso de error, como la propiedad errorText de NetworkRequest.

La siguiente muestra de código muestra cómo introducir un mensaje de error cuando NetworkRequest falla, con la visualización del error devuelto en el mensaje de error. También configura que la solicitud de red falle, dirigiéndola para realizar una solicitud imposible.

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();
    }
}