类中的异常处理和 C# 的代码隐藏
Posted
技术标签:
【中文标题】类中的异常处理和 C# 的代码隐藏【英文标题】:Exception Handling in classes and Code Behind with C# 【发布时间】:2010-09-22 20:10:02 【问题描述】:我对我正在做的一个 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();
任何帮助将不胜感激!
谢谢
【问题讨论】:
【参考方案1】:非常感谢您的回答...使用 obout 库,因此也必须尝试解决它们的异常处理功能。
【讨论】:
【参考方案2】:您不会返回异常。你扔它们。这就是异常的意义所在——您不希望异常处理弄乱您的方法签名!
在您的 catch 子句中,您实际上并没有做任何事情来处理异常。然后你根本不应该捕捉它们,只是让它们冒泡到你的代码隐藏,然后在那里捕捉它们 - 在方法调用周围放置一个 try-catch。
或者,在你的方法中捕获你的 SQL 异常,然后抛出一个带有一些合理消息的新异常,将 SqlExceptions 添加为内部异常,像这样
catch (NpgsqlException ne)
throw new Exception("Your explanatory message here", ne);
finally
...
【讨论】:
【参考方案3】:仅捕获您打算正确处理的异常。如果您想在 UI 中反映错误,请在 UI 中捕获它们。如果你想处理它们并尝试处理业务逻辑中的问题,然后抓住它们并在那时处理它们。
顺便说一句,您的代码容易受到SQL injection 攻击。最好去了解一下parameterised queries。
【讨论】:
以上是关于类中的异常处理和 C# 的代码隐藏的主要内容,如果未能解决你的问题,请参考以下文章
C#中的异常处理是怎么回事?我刚开始学C#,请各位能够帮助我.谢谢!