Pergunta

Eu tenho aplicação simples com AppDomain único que é periodicaly lançado em um servidor. Às vezes não manipulado exceção ocorre na aplicação e padrão abort / repetição / pops diálogo ignorar-se. Eu preciso para evitar alguma forma o eDIALOG de mostrar e de saída apenas a exceção em StrErr e fechar a aplicação. Então eu fechado todo o código no método principal com instrução try-catch, mas isso não ajudou em tudo -. A caixa de diálogo de exceção ainda é mostrado às vezes

O Main () parece um código como este:

try
{
    RunApplication();
}
catch (Exception exc)
{   
    Console.Error.WriteLine(exc.ToString());
    Console.Error.WriteLine(exc.StackTrace);
    if (exc.InnerException != null)
    {
       Console.Error.WriteLine(exc.InnerException.ToString());
       Console.Error.WriteLine(exc.InnerException.StackTrace);
    }
    Environment.Exit(666);
}

Esta cláusula try-catch deviam capturar todas as exceções não tratadas e de diálogo exceção nunca deve aparecer AFAIK. Estou esquecendo de algo? Ou há qualquer definição (Registro etc) no servidor que controla um comportamento especial relacionado com o código de erro de diálogo exceção / aplicação?

Foi útil?

Solução

Há um evento de exceção não tratada, você pode assinar no domínio do aplicativo.

    public static void Main()   
    {   
        AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(OnUnhandledException);

        //some code here....
    }   

    /// <summary>
    /// Occurs when you have an unhandled exception
    /// </summary>
    public static void OnUnhandledException(object sender, UnhandledExceptionEventArgs e)   
    { 
        //here's how you get the exception  
        Exception exception = (Exception)e.ExceptionObject;  

        //bail out in a tidy way and perform your logging
    }

Outras dicas

Você já considerou a possibilidade de que a sua cláusula catch pode haver exceções jogando? Você desova threads em seu aplicativo principal?

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top