我有一个使用Microsoft.Azure.Devices.Client.DeviceClient的Xamarin应用程序来侦听来自Azure IoT集线器的消息。偶尔,我会遇到一些无法捕获和处理的错误。其中一个例外是:
Microsoft.Azure.Devices.Client.Exceptions.UnauthorizedException
这个异常只是我得到的异常的一个例子,我可以通过改变系统时间可靠地重新创建它。其他IoTHubExceptions是零星的,很难重新创建,因此需要尝试捕获异常。
谁能告诉我如何才能捕获这些基于IoT集线器的错误?代码是:
try
{
await _deviceClientInbound.OpenAsync();
// execution never gets passed this line and the exception is eventually thrown, having reached this point
Message receivedMessage = await _deviceClientInbound.ReceiveAsync();
if (receivedMessage == null) continue;
await _deviceClientInbound.CompleteAsync(receivedMessage);
}
catch (Exception e)
{
// Exception is never caught in here ...
// How can I catch the IoTHubException based exceptions
}发布于 2016-11-16 21:55:03
如果您收到未经授权的异常。然后,请检查设备客户端中使用的iot集线器连接字符串,以确认与连接字符串一起使用的共享访问策略是否具有您的终端所需的所有权限。
发布于 2016-12-09 00:34:09
我相信这与为支持的平台所做的各种重构有关,你可能必须捕获所有异常,处理你想要的异常,然后重新抛出你不想要的异常。
using Microsoft.Azure.Devices.Client.Exceptions;如果你想探索洞穴,可以在这里找到源码:
https://stackoverflow.com/questions/40611111
复制相似问题