Исключение потеряно после повторного броска - PullRequest
0 голосов
/ 19 ноября 2018

Доброе утро, ребята!

У меня есть метод ValidarConexaoEPI, который проверяет строку подключения, пытаясь открыть соединение с ней.В случае исключений метод, который вызвал «validate» один SolicitarNovaSincronizacao, перехватывает его и перебрасывает манипулируемое исключение.

public static SincronizacaoSinc SolicitarNovaSincronizacao(int? idUsuario, int idAlmoxarifado, string versaoAplicacao, bool validaSincronizacaoEmAndatmento = true)
    {
        SincronizacaoSinc sincronizacaoSinc = null;

        using (var conexaoLocal = new SqlConnectionEPI(_DbLocalConnectionString))
        using (var conexaoServidor = new SqlConnectionEPI(_DbOnlineConnectionString))
        {
            sincronizacaoSinc = new SincronizacaoSinc(idUsuario, idAlmoxarifado, versaoAplicacao);

            try
            {
                if (UtilDataAccess.ValidarConexaoEPI(conexaoLocal) && UtilDataAccess.ValidarConexaoEPI(conexaoServidor))
                {
                    ValidarAlmoxarifadoBaseOnline(conexaoServidor, idAlmoxarifado);
                    ValidarUsuarioBaseOnline(conexaoServidor, idUsuario);

                    CriarRegistroSincronizacao(conexaoLocal, conexaoServidor, sincronizacaoSinc);

                    if(validaSincronizacaoEmAndatmento)
                    {
                        SolicitarSincronizacao(conexaoServidor, sincronizacaoSinc);
                    }                        

                    AtualizarRegistroSincronizacao(conexaoLocal, conexaoServidor, sincronizacaoSinc);
                }

                conexaoServidor.SqlTransaction.Commit();
                conexaoLocal.SqlTransaction.Commit();
            }
            catch (Exception exception)
            {
                throw new Exception(String.Format(
                    "Erro ao iniciar sincronizacao. {0}", exception.Message), exception.InnerException);
            }
        }

        return sincronizacaoSinc;
    }


public static bool ValidarConexaoEPI(SqlConnectionEPI conexao) //This method is in another static class
    {
        try
        {
            conexao.Open();
        }
        catch (SqlException sqlException)
        {
            var dataSource = conexao != null && conexao.SqlConnection != null
                ? conexao.SqlConnection.DataSource : "string de conexão inválida";

            throw new Exception(String.Format(
                "Não foi possível estabelecer uma conexão com o banco de dados ({0}).", dataSource), sqlException);
        }
        catch (Exception exception)
        {
            throw new Exception(String.Format(
                "Não foi possível estabelecer uma conexão com o banco de dados: {0}", exception.Message), exception);
        }

        return true;
    }

Но после повторного выброса я терял данные об исключении.Следующий метод, который вызвал SolicitarNovaSincronizacao (), получает исключение NullReference.Как вы можете видеть:

Исключительная ситуация для ValidarConexaoEPI ():

Исключительная ситуация NullReference:

Все остальные исключения по SolicitarNovaSincronizacao в порядке, проблема возникает именно с этим.Исключение, используемое для монтирования нового, в порядке.

PS .: Я знаю, что это не правильное использование try / catch!Не мой код

РЕДАКТИРОВАТЬ:

Вот StackTrace для NullReferenceException:

em AG.ControleEPI.Dados.SqlConnectionEPI.Dispose () на C: \ Projetos \ AG \ TFS2013 \ControleEPI \ Main \ Source-locais \ AG.ControleEPI.Dados \ ADO \ SqlConnectionEPI.cs: linha 28 em AG.ControleEPI.Dados.ADO.SincronizacaoDataAccess.SolicitarNovaSincronizacao (Nullable`1 idAsunda, Штат Афины, Международный университет США, США)C: \ Projetos \ AG \ TFS2013 \ ControleEPI \ Main \ Source-locais \ AG.ControleEPI.Dados \ ADO \ SincronizacaoOnline \ SincronizacaoDataAccess.cs: linha 50 em AG.ControleEPI.Negocio.Gerenciador.idAlmoxarifado, String versaoAplicacao) на C: \ Projetos \ AG \ TFS2013 \ ControleEPI \ Main \ Source-locais \ AG.ControleEPI.Negocio \ GerenciadorCustomizado \ SincronizacaoGerenciador.cs: linha 84

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...