Pregunta

  1. ¿Qué hacer si estás código de registro de errores falla?
  2. ¿Cómo se asegura de que su trabajo actualmente?
  3. ¿Cómo sabes si no su trabajo?
  4. ¿Cómo se prueba que su trabajo en un entorno de producción?
  5. ¿Debo lanzar una excepción si todo lo demás falla?

El código siguiente utiliza la biblioteca de Microsoft Enterprise Logging Application Block. ¿Cómo hacer que "mejor"?

using Microsoft.Practices.EnterpriseLibrary.Logging;

class Program
{
    static void Main(string[] args)
    {
        try
        {
            // Trying to write some data to the DB
            ...
        }
        catch (Exception ex)
        {
            LogHelper.LogException(ex, "Trying to write to the DB");
        }
    }
}

public class LogHelper
{
    public static void LogException(Exception ex, string exceptionType)
    {
        try
        {
            // Simplified version, only logging the message
            Logger.Write(exceptionType);
        }
        catch
        {
            // What do you do here???
        }
    }
}
¿Fue útil?

Solución

Vea las respuestas en mi pregunta relacionada :

Si todo lo demás falla, tienen un 'último recurso registro' en el bloque catch. Registrar la excepción a un archivo de texto en un lugar donde esto es muy poco probable que falle. Si este último registro de recurso falla lanzando otra excepción, puede tragar, o bien que la excepción, o cancelar su aplicación y mostrar el error como un cuadro de mensaje.

En este caso específico (excepcional), tragar la excepción es la única manera de no interrumpir la aplicación.

Otros consejos

Mis aplicaciones suelen hacer dos cosas en un error. La primera es escribir en un archivo de registro local (incluso si se utiliza algún tipo de registro de base de datos también). A continuación, se envía un e-mail del error a una lista de distribución establecido para la ayuda.

Así que si la escritura de registro de base de datos falla, el error se encuentra todavía en el archivo de registro local y también envió por correo electrónico.

Si la dirección de correo falla, el error se registra todavía para que pueda solucionar el problema más adelante.

Obtener más tolerante a fallos que eso sólo sería la pena el esfuerzo para aplicaciones críticas extremadamente misión, en mi humilde opinión.

Me escribe un archivo de registro, así como tener un correo electrónico enviado a una dirección común que nunca desaparecerá. Tampoco lo son a prueba de balas, pero yo creo que si nuestro sistema electrónico está inactivo o los cambios en el servidor de correo electrónico que se conocen. Tengo algunas aplicaciones que escriben a la vez una base de datos y un archivo plano y enviar el correo electrónico. Así que uno de los 3 va a funcionar. Me encontré con una de mis aplicaciones escribía a una base de datos para el registro y en la captura que estaba escribiendo a la misma db y la única manera que encontré fue la aplicación estaba fallando debido a algunos cambios en la conexión db. Me aseguré de modificar esa sentencia catch hacer el correo electrónico en lugar de la db. El único problema que tengo con archivos planos es el almacenamiento del sistema de archivos, tenemos una gran cantidad de aplicaciones que escriben archivos planos para los registros por lo que estamos constantemente que los respalda y guardándolos o simplemente borrarlas.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top