Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从类库抛出异常_C#_Exception_Handler_Throw - Fatal编程技术网

C# 从类库抛出异常

C# 从类库抛出异常,c#,exception,handler,throw,C#,Exception,Handler,Throw,当您尝试将新异常从ClassLibrary抛出到另一个项目时,Visual studio将打开Class1.cs并处理错误 我的问题是:如何将异常从被调用函数(类库)抛出到调用函数(Windows窗体)? 注意:我不想抛出原始异常,我想抛出这样的自定义异常 throw new Exception("change your password") 或 异常将被下一个catch块捕获。如果没有try-catch,应用程序将崩溃。对于visual studio调试器,调试器将打开Class1.cs并向

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

我的问题是:如何将异常从被调用函数(类库)抛出到调用函数(Windows窗体)?

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

throw new Exception("change your password")

异常将被下一个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)发送给我的朋友,他将不会遇到问题

有人有明确的想法吗?

我认为您在基本理解异常和异常处理方面还有很长的路要走,我强烈建议您学习C#开发方面的资源

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

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

VisualStudio将“中断”您指定的各种异常,任何未检查的内容都将在处理该类型异常的try/catch块的整个过程中运行

当你提到:

注意:我不想抛出原始异常,我想抛出 像这样的自定义异常

throw new Exception("change your password")
这是泛型异常的定义,而不是自定义异常。要定义自定义异常,应将异常子类化:

public class MyCustomException : Exception 
{
   ...
}
然后像这样扔掉它:

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

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

应用程序中的
Class1.cs
是什么?它在类库项目中吗?或application projectClass1.cs位于ClassLibrary项目中。Visual Studio仅在将错误包含在装运程序中时才会“处理”该错误。这并不常见。是否将
类库导入第二个项目?如何导入?您的问题需要澄清。你的意思是想向Visual Studio而不是运行时程序抛出异常吗?谢谢,但是,我不想使用try catch块-我想通过Visual Studio处理设计时的错误。“Visual Studio设计时”的确切含义是什么?我的意思是Visual studioSource中的调试时间存储在.pdb文件中,如果您想在库源代码中进行调试…如果您正在描述的是远程调试,则应随.dll一起提供。
throw new Exception("change your password")
public class MyCustomException : Exception 
{
   ...
}
throw new MyCustomException("Some description of what went wrong");