gpt4 book ai didi

ios - Objective-C - 如何进行异常捕获并避免应用程序崩溃?

转载 作者:行者123 更新时间:2023-12-01 17:28:51 24 4
gpt4 key购买 nike

当我从我的按钮调用这个函数几次(像疯了几次),然后我的应用程序崩溃,而不是仅仅抛出异常并忽略。

发生异常时如何忽略崩溃?

其中 localView 是 UIView *localView .

- (void)smallLocalView {
@try {
self.localView.backgroundColor = [UIColor blackColor];
[self.localView.layer removeFromSuperlayer];
//self.localView.opaque = NO;
}
@catch(NSException *exp) {
//NSLog(@">>> failed %@" , exp.reason);
NSLog(@"OK - but dont crash!!!");
}
@finally {
NSLog(@"OK - but dont crash!!!");
}

}

enter image description here

编辑:

enter image description here

最佳答案

tl; dr 通常,您不应该 try catch 异常,而应该尝试修复根本原因。

您感兴趣的异常有两种。如图所示,第一种是系统异常。处理器遇到问题,例如尝试访问 protected 内存(通常通过尝试取消引用空指针来调用)。你无法捕捉到这种异常。操作系统将在引发程序时终止您的程序。

顺便说一句,这个问题几乎可以肯定是由于 localView 过早地被释放,或者你可能不是在主线程上访问它(根据 Edgar 的回答)。

另一种异常是 Objective-C 异常,它总是以编程方式引发。虽然您可以使用 @try { ... } @catch { ... } 捕获这些 block ,一般你不应该。原因是没有强制措施使代码异常安全,因此异常可能会展开需要释放资源的堆栈帧或需要清理以保持数据结构一致的堆栈帧。一旦抛出并捕获异常,就无法保证程序状态的逻辑一致性。您唯一真正的选择是尽可能干净地终止。

关于ios - Objective-C - 如何进行异常捕获并避免应用程序崩溃?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42761536/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com