【问题标题】:UIWebView - Error Handling Best Practices [closed]UIWebView - 错误处理最佳实践 [关闭]
【发布时间】:2014-11-28 12:37:31
【问题描述】:

我正在尝试找出最合适的方法来处理在UIWebView 中加载页面时可能发生的错误。

如果我发现网络相关问题或服务器相关问题,我想提醒用户。我无法找到有关要检查的特定错误代码的任何详细信息。这就是我现在拥有的:

NSInteger errorCode = [error code];

NSString* title = nil;
NSString* message = nil;

if (errorCode == NSURLErrorNetworkConnectionLost || errorCode == NSURLErrorNotConnectedToInternet) {
    title = @"Error";
    message = @"The network connection appears to be offline.";
}

if (errorCode == NSURLErrorTimedOut || errorCode == NSURLErrorBadServerResponse) {
    title = @"Error";
    message = @"There was an error loading the request. Please try again later.";
}

if (title != nil) {
    UIAlertView* alert = [[UIAlertView alloc] initWithTitle:title message:message delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];
    alert.tag = TAG_WEB_ERROR;
    [alert show];
}

我是否正在检查正确的错误代码?关于检查和处理潜在错误的更好方法有什么想法吗?

【问题讨论】:

    标签: ios


    【解决方案1】:

    一些错误代码定义在NSURLError.h 例如NSURLErrorTimedOut

    if ([error.domain isEqualToString:NSURLErrorDomain]) {
       if(error.code == NSURLErrorTimedOut) {
          ...
       }
    }
    

    不确定这是否是 UIWebView 返回的完整错误代码集。 并且没有NSError-s list之类的东西,你需要检查代码和域。

    【讨论】:

    • 谢谢。那么是否只是假设所有开发人员都通过反复试验找出潜在的错误?我想我认为 Apple 文档会列出代码。
    • 在大多数情况下,我只处理 2 种错误。应用程序错误或任何其他错误,因此不需要确切知道错误是什么。为什么你需要知道究竟是什么错误?
    • 我是 iOS 新手,所以请原谅任何无知。但是,我读到它们是潜在的“错误”,如果您尝试加载页面,但在加载之前退出,例如,等等。我不想在发生非真正错误时提醒用户。
    • 啊,我明白了,我猜你可能想改变这个问题。我所做的是等待加载完成,如果加载页面,则忽略任何错误。因此,您会收到有关重定向或其他内容的错误,但已加载主要内容。希望有帮助。还要检查这个:stackoverflow.com/a/15916853/2754158
    【解决方案2】:

    假设您在视图控制器中使用 UIWebView,您可以将视图控制器设置为 UIWebView 的委托,并从 UIWebViewDelegate 协议实现以下方法

    - (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error
    {
        UIAlertView* alert = [[UIAlertView alloc] initWithTitle:@"Error" message:[error localizedDescription] delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];
        alert.tag = TAG_WEB_ERROR;
        [alert show];
    }
    

    【讨论】:

      【解决方案3】:

      也许不是直接回答您的问题(我在检查正确的错误代码吗?),而是在NSURLErrorDomainCFNetworkErrors 的上下文中Mattt Thompson has a great rundown at NSHipsterNSError

      该列表在格式整齐的表格中包含可能的错误代码、错误域和相关原因。

      【讨论】:

        猜你喜欢
        • 2011-05-30
        • 2020-12-24
        • 1970-01-01
        • 2018-09-12
        • 2017-11-26
        • 2016-06-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多