处理同步错误和超时 - .NET SDK
Atlas Device SDK 已弃用。 有关详细信息,请参阅弃用页面。
Device Sync通过 SessionExceptions表示错误。 除了标准异常属性之外,您还可以访问权限ErrorCode ,其中包含有关错误类型的信息,并允许您使用强类型处理逻辑。
config.OnSessionError = (session, sessionException) => { switch (sessionException.ErrorCode) { // See https://www.mongodb.com/zh-cn/docs/realm-sdks/dotnet/latest/reference/Realms.Sync.Exceptions.ErrorCode.html // for a list of all error codes case ErrorCode.BadQuery: break; } };
设置客户端日志级别
要控制客户端记录器记录哪些消息,请使用LogLevel:
Logger.LogLevel = LogLevel.Debug;
提示
要在开发应用程序时诊断和排除错误,请将日志级别设置为 debug
或trace
。 对于生产部署,请降低日志级别以提高性能。
自定义日志记录功能
要设置自定义记录器函数,请将Logger.Default设置为自定义记录器函数。
using Realms.Logging; Logger.LogLevel = LogLevel.All; // customize the logging function: Logger.Default = Logger.Function(message => { // Do something with the message });
处理超时
在同步会话期间,事件可能会超时而不引发异常。 您可以将CancelAsyncOperationsOnNonFatalErrors设置为true
,以便这些事件引发异常,然后您可以对其进行处理。 以下代码显示了设置CancelAsyncOperationsOnNonFatalErrors
属性以及超时时引发异常的3事件的示例:
var config = new FlexibleSyncConfiguration(app.CurrentUser!) { CancelAsyncOperationsOnNonFatalErrors = true, }; // These operations will throw an exception // on timeout or other transient sync session errors. var realm = await Realm.GetInstanceAsync(config); var session = realm.SyncSession; await session.WaitForUploadAsync(); await session.WaitForDownloadAsync();