连接到没有网络的服务器时,我需要确定没有互联网异常 . 但是在iOS上我得到 IOException
(在Android上例外是 ConnectException
) .
异常消息包含以下错误消息:
Error Domain = NSURLErrorDomain Code = -1009“Internet连接似乎处于脱机状态 . ” UserInfo = {NSUnderlyingError = 0x10bc06330 {Error Domain = kCFErrorDomainCFNetwork Code = -1009“(null)”UserInfo = {_ kCFStreamErrorCodeKey = 50,_kCFStreamErrorDomainKey = 1}},NSErrorFailingURLStringKey = http:// ...,NSErrorFailingURLKey = http:// . ..,_kCFStreamErrorDomainKey = 1,_kCFStreamErrorCodeKey = 50,NSLocalizedDescription = Internet连接似乎处于脱机状态 . }
我可以解析此消息并检查它是否包含 Code=-1009
. 但是,有没有更优雅的方法从 JavaLangException
检查 NSError
?
1 回答
不幸的是,目前还没有超过NSException的超类,但这导致了比它解决的问题更多的问题 . 为每个iOS网络错误代码定义新的异常类也没有意义,因为这会增加使用j2objc的每个应用程序的大小 . 考虑使用以下内容:
if (exception.getMessage().contains("NSURLErrorDomain Code=-1009")) ...
或定义执行此检查的isConnectionOffline(Exception e)
方法以及用于Android的方法 .对于某种NSURLErrorDomain异常包装器,您可以file an enhancement request,这可能会使这些错误更容易破译 . 更好的是,we love contributions如果你想出一些有用的东西 . ;-)