c#dll将错误返回给调用应用程序的好方法是什么?

时间:2009-05-05 03:42:33

标签: c# exception exception-handling error-handling

我正在编写一个dll,它是访问数据库的包装器。我一般都是c#的新手,因为我的背景是用perl进行web开发LAMP,我不知道什么是将错误返回给调用应用程序的好方法,以防它们将错误的参数传递给我的函数或者什么不是

我现在不知道,除了可能做一些msgbox或抛出一些例外,但我不知道从哪里开始寻找。任何帮助或资源都将非常有用:)

感谢〜

6 个答案:

答案 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。另见

http://msdn.microsoft.com/en-us/library/ms229030.aspx

答案 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)

抛出新的异常?