.NET Core - 找不到类型或命名空间名称“SystemException”

时间:2016-08-28 01:15:36

标签: .net-core

我在.NET Core 1.0类库中遇到以下编译错误:

  

“找不到类型或命名空间名称'SystemException'(您是否缺少using指令或程序集引用?)”,代码:CS0246。

project.json

 {
  "name": "Dna.Net.Core",
  "version": "1.0.0-*",

  "dependencies": {
    "Autofac": "4.1.0",
    "NETStandard.Library": "1.6.0",
    "System.Data.SqlClient": "4.1.0",
    "System.Runtime": "4.1.0",
    "System.Runtime.Serialization.Formatters": "4.0.0-rc3-24212-01",
    "System.Runtime.Serialization.Primitives": "4.1.1"
  },

  "frameworks": {
    "netstandard1.6": {
      "imports": "dnxcore50"
    }
  }
}

ISystemExceptionMessageBuilder.cs

using Dna.Net.Core.Common;
using System;

namespace Dna.Net.Core.Exceptions
{
    public partial interface ISystemExceptionMessageBuilder
    {
        CustomMessage Parse(SystemException ex);
    }
}

Framework Guideline状态“不要抛出Exception或SystemException”。

coreFX项目中的搜索会在classes that have refactored away from System.SystemException中显示评论。

可以/将/我应该能够在.NET Core中捕获System.SystemException吗?

2 个答案:

答案 0 :(得分:2)

System.SystemException不是.NET Core的一部分(至少不是netcoreapp1.0netstandard1.6)。但是netcoreapp1.1netstandard1.7预定seems

其他答案的引用源文件可能未编译到System.Runtime(或其随附System.Private.CoreLib

回答你的问题:截至今天你不应该抓住System.SystemException。对于最终处理,您应该捕获System.Exception,如果您能够处理异常,则它不能是.NET Core中的System.SystemException

答案 1 :(得分:0)

coreCLR中存在System.SystemException - https://github.com/dotnet/coreclr/blob/master/src/mscorlib/src/System/SystemException.cs

因此它可以在mscorlib中使用。所以它可以使用。但不建议这样做。因为在抛出系统异常时不会获得有关异常的任何特定信息,而是抛出相关的异常。系统异常应限于系统错误(特定于平台)。