1

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

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

任何帮助,将不胜感激!

谢谢

4

3 回答 3

1

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

顺便说一句,您的代码容易受到SQL 注入攻击。最好去学习一些关于参数化查询的知识。

于 2008-11-18T10:43:29.680 回答
0

你不返回异常。你扔它们。这就是异常的重点——您不希望异常处理弄乱您的方法签名!

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

或者,在您的方法中捕获您的 SQL 异常,然后抛出一个带有一些合理消息的新异常,将 SqlExceptions 添加为内部异常,如下所示

catch (NpgsqlException ne)
{
    throw new Exception("Your explanatory message here", ne);
}
finally
{
    ...
}
于 2008-11-18T10:46:02.577 回答
0

很酷,感谢您的回答...使用 obout 库,因此也必须尝试解决它们的异常处理功能。

于 2008-11-18T11:45:13.207 回答