异常没有得到定义

时间:2015-05-20 08:53:57

标签: c# exception-handling

我正在尝试创建一个新的自定义异常。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace project1.Exception
{
  public class ItemNotFoundException: Exception
  {
  }
}

在构建项目时,它会出错。

  

错误51'Solution1.project1.Exception'是'命名空间',但用作'类型'D:\ wORKsHOP \ Arte.Apax2 08.05.2015 \ project1 \ Attributes \ Logger.cs 71 80 Solution1.project1 < / p>

知道为什么会这样吗?我是否需要添加System.exception

之类的内容

3 个答案:

答案 0 :(得分:3)

namespace project1.Exception重命名为namespace project1.MyCustomException或其他类似内容。编译器在

中看到Exception
public class ItemNotFoundException: Exception

指的是您的命名空间Exception,而不是类。将命名空间重命名为Exception以外的任何名称都将解决此问题。

答案 1 :(得分:1)

您正在使用的名称空间称为

namespace project1.Exception

在此命名空间中,您使用的是Exception的继承。这个问题是编译器认为你的

public class ItemNotFoundException: Exception 

引用命名空间而不是Exception标准类。 要解决这个问题,只需写下

即可
public class ItemNotFoundException: System.Exception

它应该可以正常工作。

答案 2 :(得分:0)

您通过调用命名空间position:absolute来创建名称歧义。现在编译器确实认为命名空间命名比Exception命名空间中名为Exception的对象更重要。因此,它会警告您从命名空间而不是对象继承。如果要在此类命名空间中继承System.Exception,则需要完全限定继承的对象名称(包括其命名空间)以解决歧义。

System

当然,您也可以简单地将您的命名空间重命名为不包含namespace project1.Exception { public class ItemNotFoundException: System.Exception //Fullqualified reference to exception { } } ,如前所述 - 那么您可以在没有完全限定名称的情况下生活。