C# 为什么我的异常显示为这样?

C# 为什么我的异常显示为这样?,c#,exception,C#,Exception,我创建了自己的类库,我有如下create()方法: public int create() { try { if(path!=null){ //do somethings } else{ throw new ArgumentNullException("path cannot be null ro empty", "path"); } catch{ t

我创建了自己的类库,我有如下
create()
方法:

public  int create()
{
    try
    {
        if(path!=null){
        //do somethings
        }
        else{
        throw new ArgumentNullException("path cannot be null ro empty", "path");
        }
        catch{
        throw;
        }
        return 0;
    }
}
在另一个项目中,我添加了我的类库DLL,当我使用我的库方法时,由于一些原因,例如
path=null
我的方法抛出了一个异常,我在catch中写入了
throw
。。。 我不想这样,我怎么能在项目中调用
create()
方法的行中得到错误呢

非常感谢。 对不起,我不太懂英语,所以我试着再说一遍我的意思 我试图创建类库,我想让其他人使用它,我想当我的create()方法抛出异常时,visual studio突出显示调用create方法的行,但它打开我的dll,转到create方法并突出显示我编写的行抛出;。。。我怎样才能解决它

最后我找到了答案,请参见以下链接:

您可以在尝试之前进行检查:

public  int create(){
 if(path!=null){
     try{

     //do somethings
      }
     catch{
      throw;
  }
  else{
      throw new ArgumentNullException("path cannot be null ro empty", "path");
  }
  return 0;
}

要在抛出异常时在正确的行停止调试器,只需删除
try-catch
块(在任何情况下都完全不需要):


正如Oscar所指出的,在抛出异常时应该切换参数,因为第一个参数用于参数名,第二个用于消息。

您已经交换了ArgumentNullException构造函数的参数。首先是参数名,然后是消息

public ArgumentNullException(
    string paramName,
    string message
)


另外,您可以安全地删除catch子句,因为您在那里什么也不做。只捕获您想以某种方式处理的异常,否则,让它冒泡。

当您重新引发异常时,每个方法中只保存一个堆栈帧,因此,您无法找出引发异常的行,只能找到重新引发异常的行。您可以在第一次捕获消息时记录该消息,也可以不重试,而是抛出一个新异常,并将捕获的异常作为内部异常提供。

我不知道您在问什么。请重新格式化并重新表述你的问题,从现在开始,我不可能理解你想要什么。啊,我想我理解你的意思,只需删除try-catchblock@siamak我想你想从调用函数的地方捕捉异常??对不起,我不太懂英语,我试图创建类库,我想让其他人使用它,我想当我的create()方法抛出异常时,visual studio突出显示调用create方法的行,但它打开我的dll,转到create方法并突出显示我编写的
抛出的行。。。如何解决此问题最终我找到了答案,请参见以下链接:[在调试时从DLL隐藏代码][1][1]:我删除了
try catch
块,但仍然在抛出create()方法中的异常时visual studio打开我的DLL,转到create方法并突出显示我编写的抛出行;我希望它突出显示用户调用create的行method@siamak然后,您必须使用“Release”(无调试信息)构建dll,然后在项目中引用该dll。用户只有在机器上有该dll的源代码时才会看到该行,通常情况下并非如此
public ArgumentNullException(
    string paramName,
    string message
)