Manipulação de exceção em classes e Código Atrás com C #

votos
1

Estou um pouco preso com um projeto asp.net que eu estou fazendo! Eu tenho uma classe que é chamado a partir do código por trás e muitos de sua função tem nenhum tipo de retorno ou seja, sendo nula. Como se faz o tratamento de exceção, então ??? Além disso, se a função dentro da classe tem um tipo de retorno de, por exemplo, um conjunto de dados como seria um em seguida, retornar uma exceção ou indicar que uma exceção tinha ocorrido? Anexei o seguinte código da minha classe que é referenciado a partir do código por trás.

public void fnRecord(string []varList, string fnName)
    {
        try
        {
            String x;

            StringBuilder SQLParameters = new StringBuilder();

            SQLParameters.AppendLine(SELECT #{Function}();
            {
                SQLParameters.Replace(#{Function}, fnName);
            }

            for (int i = 0; i < varList.Length; i++)
            {                   
                x = varList[i].ToString();
                SQLParameters.Append(' + x + ',);
            }

            SQLParameters.Remove((SQLParameters.Length - 1), 1);
            SQLParameters.Append());

            string SQLCMD = SQLParameters.ToString();

            conn.Open();
            NpgsqlCommand command = new NpgsqlCommand(SQLCMD, conn);
            Object result = command.ExecuteScalar();
        }

        catch (NpgsqlException ne)
        {
            //return ne;
        }

        catch (Exception x)
        {
            //error code
        }

        finally
        {
            conn.Close();
        }
    }

Qualquer ajuda seria apreciada!

obrigado

Publicado 18/11/2008 em 11:35
fonte usuário
Em outras línguas...                            


3 respostas

votos
1

Apenas capturar as exceções onde você pretende lidar com eles corretamente. Se você quiser refletir os erros na interface do usuário, pegá-los na interface do usuário. Se você deseja lidar com eles e tentar lidar com o problema na lógica de negócios, então pegá-los e tratá-los nesse ponto.

By the way, seu código é susceptable a injeção SQL ataques. Melhor ir aprender alguma coisa sobre consultas parametrizadas .

Respondeu 18/11/2008 em 11:43
fonte usuário

votos
0

Você não retornam exceções. Você jogá-los. Esse é o ponto de exceções - você não quer tratamento de exceção desordenar suas assinaturas de método!

Em suas cláusulas de captura, você realmente não fazer nada para lidar com as exceções. Então você não deve pegá-los em tudo, basta deixá-los borbulhar ao seu código-behind, e pegá-los lá - colocar um try-catch em volta da chamada de método.

Alternativamente, pegar suas exceções SQL em seu método, em seguida, lançar uma nova exceção com alguma mensagem sensata, acrescentando os SQLExceptions como a exceção interna, como esta

catch (NpgsqlException ne)
{
    throw new Exception("Your explanatory message here", ne);
}
finally
{
    ...
}
Respondeu 18/11/2008 em 11:46
fonte usuário

votos
0

Frescos obrigado pelas respostas ... que trabalham com a biblioteca obout assim tem que tentar e trabalhar as suas funções de manipulação de exceção também.

Respondeu 18/11/2008 em 12:45
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more