我可以向 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
{
}
但有时会传递一个错误的 LocationStart
或 LocationEnd
,我会收到如下错误:
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)' 执行控制台写入行并查看它吐出的内容。
我有一个使用此第 3 方调用 (geoLock.AdjustSensorsAsync
) 来创建对象的 Web 服务。
当它工作时,它工作正常。这是:
geologicalEvent.LocationName = geologicalEvent.LocationName;
try
{
sensorResult = await geoLock.AdjustSensorsAsync(
geologicalEvent.LocationId,
geologicalEvent.LocationName,
geologicalEvent.LocationStart.ToUniversalTime(),
geologicalEvent.LocationEnd.ToUniversalTime()
);
} catch
{
}
但有时会传递一个错误的 LocationStart
或 LocationEnd
,我会收到如下错误:
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)' 执行控制台写入行并查看它吐出的内容。