我在.NET Core 1.0类库中遇到以下编译错误:
“找不到类型或命名空间名称'SystemException'(您是否缺少using指令或程序集引用?)”,代码:CS0246。
{
"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"
}
}
}
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吗?
答案 0 :(得分:2)
System.SystemException
不是.NET Core的一部分(至少不是netcoreapp1.0
或netstandard1.6
)。但是netcoreapp1.1
或netstandard1.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中使用。所以它可以使用。但不建议这样做。因为在抛出系统异常时不会获得有关异常的任何特定信息,而是抛出相关的异常。系统异常应限于系统错误(特定于平台)。