C#中的异常处理和使用C#的代码隐藏

时间:2008-11-18 10:35:09

标签: asp.net postgresql function c#-3.0

我有点陷入我正在做的asp.net项目!我有一个从后面的代码调用的类,它的许多函数都没有返回类型,即无效。如何进行异常处理呢???此外,如果类中的函数确实具有返回类型(例如,数据集),那么如何返回异常或指示发生了异常?我从我的类中附加了以下代码,该代码从后面的代码中引用。

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

任何帮助将不胜感激!

由于

3 个答案:

答案 0 :(得分:1)

只捕获您打算正确处理它们的异常。如果要在UI中反映错误,请在UI处捕获它们。如果你想处理它们并尝试在业务逻辑中处理问题,那么抓住它们并在那时处理它们。

顺便说一句,您的代码对于SQL injection攻击是可以接受的。最好去了解parameterised queries

答案 1 :(得分:0)

您不会返回异常。你抛弃它们。这就是例外 - 您不希望异常处理混乱您的方法签名!

在catch子句中,您实际上并没有做任何事情来处理异常。然后你根本不应该抓住它们,只是让它们冒泡到你的代码隐藏,然后抓住它们 - 在方法调用中放置一个try-catch。

或者,在方法中捕获SQL异常,然后使用一些合理的消息抛出一个新的异常,将SqlExceptions添加为内部异常,就像这样

catch (NpgsqlException ne)
{
    throw new Exception("Your explanatory message here", ne);
}
finally
{
    ...
}

答案 2 :(得分:0)

非常感谢您的答案...使用obout库,因此必须尝试解决他们的异常处理功能。