【问题标题】:Create a custom exception and handle it with .NET Core创建自定义异常并使用 .NET Core 处理它
【发布时间】:2017-11-09 18:52:07
【问题描述】:

我在 .NET Core 中有 2 个项目,一个“业务”项目和一个 WebApi。

我想创建一个自定义异常以从我的“业务”项目中抛出并在控制器中尝试/捕获,然后根据异常类型执行不同的操作。

我尝试了创建自定义异常的经典方式(部分代码)

protected NegativeNumberException(SerializationInfo info, StreamingContext context)
  : base(info, context)
{
}

SerializationInfo 在 .NET Core 中不存在。

我该怎么做?

【问题讨论】:

  • 所以如果关于如何在.Net Core中处理SerializationInfo的问题,那么你需要编辑你的问题标题......

标签: c# .net asp.net-core


【解决方案1】:

使用System.Runtime.Serialization.Formatters nuget 包。

一般情况下,您可以在查找特定类型时使用package search 站点。

【讨论】:

  • 为什么使用 .NET Core 无法添加像 .NET "classic" 这样的程序集 :)
  • @Kris-我不确定能否用 1-2 句话回答,这就是为什么建议您从阅读 .NET Standard docs.microsoft.com/en-us/dotnet/standard/library 开始的原因。这应该让您了解 .NET 库何时以及为什么可以与 .Net Core 一起使用
  • 我不确定格式化程序包是否足够。 .NET Core(至少对于 1.0 和 1.1 来说如此)已删除接受 SerializationInfo info, StreamingContext context 参数的构造函数。所以虽然你可以在你自己的异常中添加它,但你不能序列化基类,它最终是Exception,其中一个推理指向@​​987654324@ 特别是,我们不想添加需要的类型核心框架类型,例如异常和集合,必须实现序列化逻辑。
  • [Seriablizable] 属性对于 BinarySerializer 来说可能已经足够了,这使得它在 .NET Core/Standard 2.0 中回归,但它仍然与上面保留基本类型的声明相矛盾(例如 @ 987654330@) 与序列化无关
  • 对于任何来到这里并想知道事态状态而不阅读前面提到的整个线程的人,.NET Core 支持使用一部分类型进行二进制序列化,包括异常和几个“重要的异常派生类型” ",可以找到here。可以在此处找到更改的原因:Scale back Serializable for .NET Core 2.0
猜你喜欢
  • 2012-11-14
  • 2015-06-24
  • 2023-03-07
  • 2023-04-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-09-16
  • 2017-06-18
相关资源
最近更新 更多