objective-c - IOS- 使用 Try/Catch 加载 Json

标签 objective-c ios exception error-handling try-catch

我正在从服务器加载数据,但有时服务器未连接(错误)。

我想使用 Try/Catch 或其他东西来避免错误应用

1: try/cactch 加载数据 2:尝试/捕捉图像

我不知道怎么用 我写的代码是:

@try
{
 dispatch_async(htvque, ^{
        NSData* data = [NSData dataWithContentsOfURL: [NSURL URLWithString:listChannel]];
        NSError* error;
        jsonTable = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:&error];
        if (error) {
            NSLog(@"%@", error);
        }
        else
        {
             NSMutableArray *arrImage = [jsonTable objectForKey:@"ListImage"];
        for (int i =0; i<arrImage.count; i++) {
            UIImage * result;
            UIImageView *imgView = [[UIImageView alloc] init];
            imgView.frame  = CGRectMake(0, 30 * i , 20, 20);
            imgView.image = result;
            @try
            { 
               NSData * data = [NSData dataWithContentsOfURL:[NSURL URLWithString:                               [arrImage objectAtIndex:i]]];
               result = [UIImage imageWithData:data];
               [self.view addSubview:imgView];
            }
            @catch
            {}
            @finally
            {}


        }

        }
    });
}
@catch(NSException * exp)
{
  NSLOG(@"abc");
}
@finnaly
{

}

最佳答案

不要为此目的在您的 ObjC 程序中使用异常。

在 ObjC 中,仅在以下情况下使用异常:

  • 您不打算康复
  • 当您不打算恢复时

-- if 一个异常(exception)在这里甚至是合适的(我只是不使用它们,但这对很多人来说有点太“核心”了)。

无论如何 - ObjC 中的异常表示程序员错误并且在逻辑上是您不能期望从中恢复的东西(与其他语言不同)。弄清楚你的错误是什么而不是“尝试并吞下”错误处理。

我建议的补救措施是创建一个新问题,其中显示适当的代码,并详细说明异常、如何重现它等。


注意:实际上有一些古怪的 Cocoa API 会在不太异常(exception)的情况下抛出异常,而当它们本应使用另一种方法来处理错误时,例如 NSError。您将在开发中看到的绝大多数 Cocoa 异常都是您应该并且可以纠正的问题(范围错误、不响应选择器、引用计数)。

关于objective-c - IOS- 使用 Try/Catch 加载 Json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13144843/

相关文章:

ios - 如何在iphone和模拟器之间建立p2p连接

ios - 应用程序在前台时未触发通知-iOS

ios - 关闭 UIScrollView 中的键盘

ios - 使用 weak self 避免在闭包中保留循环

java:重新抛出捕获的异常

iphone - 如何以编程方式在 iPhone 中查找掉话?

ios - 在顶部带有标签的 UISearchBar TextField 中重新定位光标

ios - tvOS 上的 UISwipeGestureRecognizer 给我一个 EXC_BAD_ACCESS

c++ - 为什么 GCC 允许通过右值引用捕获?

c++ - 在线程函数中处理异常