如何在错误地调用Foundation函数时抛出Swift异常?

时间:2015-12-15 01:59:02

标签: ios swift exception exception-handling try-catch

我有一个快速函数func hexStrToBytes(input: String) throws -> [UInt8]将HEX字符串转换为Uint8数组,当输入格式不正确时,可能需要抛出异常。

但我无法自行验证其格式,而是使用bytes.append(UInt8(str,radix: 16)!)。如果此函数成功执行,那么我的函数可以返回正确的值。如果这个bytes.append(UInt8(str,radix: 16)!)有问题,我需要抛出异常。但我怎么知道它错了?这个程序可能只是粉碎,我甚至没有机会抛出异常。

1 个答案:

答案 0 :(得分:1)

此代码段应该接近您要查找的内容。它使用可选绑定来检查字符串是否可转换,如果不是则抛出错误。

if let theByte = UInt8(str, radix: 16) {
    bytes.append(theByte) 
} else {
    throw MyError()
}

请注意,Swift不使用术语“例外”来描述其错误处理机制。虽然throw / catch控制流程类似,但它们的实现方式与其他语言中的异常不同。