在方法而不是课堂上

时间:2016-04-16 13:13:13

标签: c# visual-studio exception

我正在编写一个类,当参数被错误时,我想在缺少参数的方法中抛出一个execption。

Happend:在课堂上调用execption,但一切都很好。

屏幕(在课堂上调用execption): enter image description here

屏幕(我希望execption在哪里): enter image description here

原因:我想将它用作某种类型的库,所以我希望在缺少某些东西而不是类的源代码的方法中抛出execption。

3 个答案:

答案 0 :(得分:3)

您可以将您的库类标记为non-user code并启用Just My Code。虽然请注意,此配置意味着您无法进入库的方法。

The exception is shown from the calling code, not the base library

Tools > Options > Debugging > General > Enable Just My Code

答案 1 :(得分:1)

异常将被抛出到您想要的位置。调试器停止的原因是调试器可以访问源。如果您将代码编译为库,然后在另一个应用程序中引用此lib,则调试器将停止在您调用抛出异常的方法的位置,因为这是他可以到达的异常的最近点。

答案 2 :(得分:0)

你不能,你扔到哪里扔,就是这样。如果你想将异常创建与处理分开,你可以做的是创建你的异常对象而不是抛出它,而是从你的方法中返回它,如果你愿意,可以抛出它

Exception MakeException(bool DoThrow, string Message)
{
    if(DoThrow)
    {
        if(string.IsNullOrWhiteSpace(Message)
             return new Exception("Message Missing");
        else
             return new Exception(Message);
    }         
    return null;
}

void Main()
{
    var ex = MakeException(true,"MyMessage");
    if(ex != null)
       throw ex;
}

这样你就可以在任何地方创建例外并将其扔到另一个地方。