Objective c 知道何时从Xamarin抛出NSException
我有一些调用本机函数的Xamarin.Mac代码。调用函数时,有时会导致抛出NSException(取决于连接的硬件)。不幸的是,使用try/catch无法捕获异常,导致我的应用程序崩溃 现在,我可以忍受导致这种例外的情况。然而,我不能忍受我的应用程序崩溃 我希望能够在抛出NSException时捕获,可能会报告错误并继续 类似于以下的操作可以做到这一点:Objective c 知道何时从Xamarin抛出NSException,objective-c,xamarin,xamarin.mac,Objective C,Xamarin,Xamarin.mac,我有一些调用本机函数的Xamarin.Mac代码。调用函数时,有时会导致抛出NSException(取决于连接的硬件)。不幸的是,使用try/catch无法捕获异常,导致我的应用程序崩溃 现在,我可以忍受导致这种例外的情况。然而,我不能忍受我的应用程序崩溃 我希望能够在抛出NSException时捕获,可能会报告错误并继续 类似于以下的操作可以做到这一点: ExceptionCatcher.CatchExceptionAndGetError( () => _platformThin
ExceptionCatcher.CatchExceptionAndGetError(
() => _platformThing.SometimesThrowException(),
out var error);
if (error != null)
{
// Report error
}
// Carry on
我已经验证了在直接使用Objective-C时可以捕获异常
我知道NSException包装解决方案。但是,在尝试使用我的代码实现类似的功能之前,我是否可以使用Xamarin已有的功能来处理这种情况?可以使用
运行时.MarshalManagedException
和运行时.MarshalObjectiveException
事件拦截这些异常
由于捕获这些异常不是无性能的功能,因此必须通过构建过程(mtouch/mmp)启用它们:
--封送管理的异常=
- 违约
- 展开码
- throwobjectivec异常
- 流产
- 禁用
--封送objectivec异常=
- 违约
- 解卷管理代码
- throwmanagedexception
- 流产
- 禁用
ObjCRuntime.Runtime.MarshalObjectiveException
处理程序,并使用MarshalObjectiveExceptionMode.ThrowManagedException
为我提供一个可以处理的异常,这样我的应用程序就不会再崩溃。你真是太美了。非常感谢。你想把这个作为答案吗?我渴望学习和提高。为什么投反对票?很高兴这有帮助,我把评论变成了答案。