处理服务结构中的异常

问题描述 投票:1回答:1

我的api中有一个控制器方法调用一个抛出自定义异常的服务。

customException : 
    public class DematerialisationException : Exception
{
    private static readonly string DefaultMessage = "An error occurred during dematerialisation.";

    public DematerialisationException() : base(DefaultMessage)
    { }

    public DematerialisationException(string message) : base(message) 
    { }

    public DematerialisationException(Exception inner) : base (DefaultMessage, inner)
    { }

    public DematerialisationException(string message, Exception inner) : base (message, inner)
    { }
}

服务中调用的方法直接抛出异常:

public async Task<LiasseDetails> CreateLiasseAsync(LiasseCreate liasseData) => 
throw new DematerialisationException();

然后是来电者:enter image description here

我会期望ex3被击中而不是它的ex2,你可以在截图中看到。 innerException是正确的类型,为什么错误的断点被击中?我做错了什么?

谢谢

c# azure exception asp.net-core azure-service-fabric
1个回答
2
投票

在变量观察器中,您可以看到在获取ServiceException的值时抛出InnerException,这是因为异常对象无法序列化。因此,尝试将属性[Serializable()]添加到DematerialisationException类:

[Serializable()]
 public class DematerialisationException : Exception
{
    private static readonly string DefaultMessage = "An error occurred during dematerialisation.";

    public DematerialisationException() : base(DefaultMessage)
    { }

    public DematerialisationException(string message) : base(message) 
    { }

    public DematerialisationException(Exception inner) : base (DefaultMessage, inner)
    { }

    public DematerialisationException(string message, Exception inner) : base (message, inner)
    { }
}
© www.soinside.com 2019 - 2024. All rights reserved.