J2ObjC:如何从JavaIOIOException获取NSError

时间:2018-07-12 10:27:37

标签: ios objective-c nserror j2objc

在连接到没有网络的服务器时,我需要确定没有互联网异常。但是在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

1 个答案:

答案 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如果您提出了有用的建议。 ;-)