我正在编写一个dll,它是访问数据库的包装器。我一般都是c#的新手,因为我的背景是用perl进行web开发LAMP,我不知道什么是将错误返回给调用应用程序的好方法,以防它们将错误的参数传递给我的函数或者什么不是
我现在不知道,除了可能做一些msgbox或抛出一些例外,但我不知道从哪里开始寻找。任何帮助或资源都将非常有用:)
感谢〜
答案 0 :(得分:9)
您可能不希望在dll中显示消息对话框,这是客户端应用程序的工作,作为表示层的一部分。
.Net库程序集通常会将异常冒泡到宿主应用程序中,所以这就是我要看的方法。
public static class LibraryClass
{
public static void DoSomething(int positiveInteger)
{
if (positiveInteger < 0)
{
throw new ArgumentException("Expected a positive number", "positiveInteger");
}
}
}
然后由主机应用程序来处理这些异常,并根据需要记录和显示它们。
try
{
LibraryClass.DoSomething(-3);
}
catch(ArgumentException argExc)
{
MessageBox.Show("An Error occurred: " + argExc.ToString());
}
答案 1 :(得分:3)
通常通过抛出ArgumentException或其子类之一来处理错误的参数。
答案 2 :(得分:2)
你想抛出异常。
见
http://msdn.microsoft.com/en-us/library/ms229007.aspx
用于最常见的框架异常,例如ArgumentException和InvalidOperationException。另见
答案 3 :(得分:2)
查看类库开发人员的设计指南:Error Raising and Handling Guidelines
答案 4 :(得分:1)
Dll通常不应创建任何类型的UI元素来报告错误。您可以抛出(与提升相同的意义)许多不同类型的异常,或创建您自己的异常,并且调用代码(客户端)可以捕获并向用户报告。
public void MyDLLFunction()
{
try
{
//some interesting code that may
//cause an error here
}
catch (Exception ex)
{
// do some logging, handle the error etc.
// if you can't handle the error then throw to
// the calling code
throw;
//not throw ex; - that resets the call stack
}
}
答案 5 :(得分:0)
抛出新的异常?