swift 中 NSRangeException 的错误句柄

亚腾德拉

我在目标 c 中尝试过,使用 try catch 块。这段代码工作正常

    NSString *string = @"This is demo text";
    NSData *data = [string dataUsingEncoding:NSUTF8StringEncoding];
    //it's(data) length is 17

    @try {
         NSData *subdata = [data subdataWithRange:NSMakeRange(4000, 20)];
    } @catch (NSException *exception) {
        NSLog(@"exception ERROR: %@",exception);
    }

这是打印异常错误。

但是当我在 swift 中使用 try catch 块尝试它时,它没有给出异常错误并且应用程序在那时崩溃了。

 var sourceString = "This is demo text"
        let sourceData = sourceString.data(using: String.Encoding.utf8)!  // sourceData is equivalent to "wav" from question


        guard let subdata = Data(sourceData.subdata(in: 4000 ..< (4000 + 20))) else{
            throw LevelParsingException.InvalidLevelContent
        }

我正在尝试在 swift 3 中处理 NSRangeException 错误。

亚腾德拉

最后我达到了以下解决方案,如果需要处理范围异常,那么我们需要这样做

var sourceString = "This is demo text"
let sourceData = sourceString.data(using: String.Encoding.utf8)!  // sourceData is equivalent to "wav" from question

总数据长度(sourceData.length)应该是您需要检索的起始点(4000)和数据长度(20)的最大值

guard sourceData.length >= (4000 + 20) else{

   throw LevelParsingException.InvalidLevelContent
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章