繁体   English   中英

从ClassLibrary抛出异常

[英]Throw exception from ClassLibrary

当您尝试将新的异常从ClassLibrary抛出到另一个项目时,Visual Studio将打开Class1.cs并处理错误。

我的问题是:如何将异常从被调用函数(ClassLibrary)扔给调用者函数(Windows窗体)?

注意 :我不想引发原始异常,我想引发这样的自定义异常

throw new Exception("change your password")

我认为您对Exception和Exception处理的基本理解还有很长的路要走,我强烈建议您选择有关C#开发的资源。

为了解决您眼前的问题,我认为您正在寻找的答案在于:

Visual Studio工具栏->调试->异常

Visual Studio会“破坏”您指定的各种异常,并且任何未检查的内容都将简单地通过任何try / catch块处理该异常类型的过程进行。

当您提及:

注意:我不想引发原始异常,我想引发这样的自定义异常

throw new Exception("change your password")

那是通用异常的定义而不是自定义异常。 要定义自定义异常,应将Exception子类化:

public class MyCustomException : Exception 
{
   ...
}

然后像这样抛出它:

throw new MyCustomException("Some description of what went wrong");

然后,要使Visual Studio针对该特定异常“中断”,请在“工具栏”->“调试”->“异常”窗口(在CLR异常下)中找到您的异常,并标记它旁边的复选框。

throw YourExceptionYouWantToThrow;

要么

throw new TypeOfExceptionYouWantToThrow();

异常将被下一个catch块捕获。 如果没有try-catch,应用程序将崩溃。 如果是Visual Studio调试器,则调试器将打开Class1.cs并向您显示异常源。 您可以通过以下方式捕获它:

private void ButtonClick(...)
{
    try{
        Class1.MethodCall();
    }
    catch(Exception ex)
    {
        //Handle the exception here
    }
}

我发现了问题。

如果您有ClassLibrary项目的源代码(包括在Class1.cs中),并且已在调试文件夹中使用了项目dll,则将发生此问题。

因此,如果我将项目程序集(仅用于dll)发送给我的朋友,那么他将不会遇到问题

有人有明确的主意吗?

try
{
    YourClass.Function();
}
catch(Exception ex)
{
   // throw your Exception
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM