处理服务结构中的异常
handling exceptions in service fabric
我的 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();
然后来电者:
我原以为 ex3 会被击中,而不是 ex2,正如您在屏幕截图中看到的那样。 innerException 是正确的类型,那么为什么会命中错误的断点呢?我做错了什么?
谢谢
在变量watcher中,可以看到在获取InnerException
的值时抛出一个ServiceException
,这是因为异常对象无法序列化。
所以尝试将属性 [Serializable()]
添加到 DematerialisationException
class :
[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)
{ }
}
我的 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();
然后来电者:
我原以为 ex3 会被击中,而不是 ex2,正如您在屏幕截图中看到的那样。 innerException 是正确的类型,那么为什么会命中错误的断点呢?我做错了什么?
谢谢
在变量watcher中,可以看到在获取InnerException
的值时抛出一个ServiceException
,这是因为异常对象无法序列化。
所以尝试将属性 [Serializable()]
添加到 DematerialisationException
class :
[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)
{ }
}