在连接到没有网络的服务器时,我需要确定没有互联网异常。但是在iOS上我得到IOException
(在Android上是ConnectException
)。
异常消息包含以下错误消息:
Error Domain = NSURLErrorDomain代码= -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
。但是,有没有更优雅的方法可以从NSError
中检查JavaLangException
?
答案 0 :(得分:0)
不幸的是,目前没有更好的方法。我们尝试将java.lang.Throwable的超类扩展为NSException,但这引起的问题超出了解决的范围。为每个iOS网络错误代码定义新的异常类也没有意义,因为这会增加使用j2objc的每个应用程序的大小。考虑使用类似if (exception.getMessage().contains("NSURLErrorDomain Code=-1009")) ...
的方法,或定义一个isConnectionOffline(Exception e)
方法来执行此检查以及对Android进行检查。
您可以file an enhancement request使用某种NSURLErrorDomain异常包装,这可以使这些错误更容易被破译。更妙的是,we love contributions如果您提出了有用的建议。 ;-)