我可以向 catch 语句添加什么来显示导致错误的属性?

What can I add to a catch statement to show the properties that caused an error?

我有一个使用此第 3 方调用 (geoLock.AdjustSensorsAsync) 来创建对象的 Web 服务。

当它工作时,它工作正常。这是:

geologicalEvent.LocationName = geologicalEvent.LocationName;
try
{
    sensorResult = await geoLock.AdjustSensorsAsync(
        geologicalEvent.LocationId,
        geologicalEvent.LocationName,
        geologicalEvent.LocationStart.ToUniversalTime(),
        geologicalEvent.LocationEnd.ToUniversalTime()
        );
} catch
{

}

但有时会传递一个错误的 LocationStartLocationEnd,我会收到如下错误:

FaultException: "Unable to record. Invalid time."

现在,它只显示错误的行号,但我想查看有关导致错误的实体的更多详细信息。

我可以向 catch 添加什么来显示具体的 LocationId 以及导致它的 'LocationStart' 和 'LocationEnd'?

谢谢!

您为特定的异常类型定义 catch 块,并使用所需信息将其封装在您自己的异常中。像这样:

catch (FaultException ex)
{
    throw new InvalidOperationException($"{ex.Message} LocationStart: {geologicalEvent.LocationStart} LocationEnd: {geologicalEvent.LocationEnd}", ex);
}
geologicalEvent.LocationName = geologicalEvent.LocationName;

try
{
    sensorResult = await geoLock.AdjustSensorsAsync(
    geologicalEvent.LocationId,
    geologicalEvent.LocationName,
    geologicalEvent.LocationStart.ToUniversalTime(),
    geologicalEvent.LocationEnd.ToUniversalTime()
    );
}
catch (Exception e)
{
    Console.WriteLine("{0} Exception caught.", e);
}

也许是这样的?使用 'catch (Exception e)' 执行控制台写入行并查看它吐出的内容。

参考:Microsoft documentation - try-catch