Do-Catch 和溢出
Do-Catch and overflow
如何在 do
catch
溢出错误中换行
let increasePerSecond: UInt32 = UInt32.max
let offset: UInt32
do {
offset = try ((nowTimeInterval - calculatedTimeInterval) * increasePerInterval)
} catch _ {
offset = 0
}
但是,如果我在 do
部分出现错误,我将无法进入 catch
并使我的应用程序崩溃
UPD: 这不是关于如何获取 var 偏移量的问题,问题是如何处理错误 ?
整数运算中的溢出不会throw
错误,因此您不能catch
它。如果你
想要检测和处理溢出,您可以使用 ...WithOverflow
之一
整数类型的方法。示例:
let a = UInt32.max
let b = UInt32(2)
if case let (result, overflow) = UInt32.multiplyWithOverflow(a, b), !overflow {
print(result)
} else {
print("overflow")
}
如何在 do
catch
溢出错误中换行
let increasePerSecond: UInt32 = UInt32.max
let offset: UInt32
do {
offset = try ((nowTimeInterval - calculatedTimeInterval) * increasePerInterval)
} catch _ {
offset = 0
}
但是,如果我在 do
部分出现错误,我将无法进入 catch
并使我的应用程序崩溃
UPD: 这不是关于如何获取 var 偏移量的问题,问题是如何处理错误 ?
整数运算中的溢出不会throw
错误,因此您不能catch
它。如果你
想要检测和处理溢出,您可以使用 ...WithOverflow
之一
整数类型的方法。示例:
let a = UInt32.max
let b = UInt32(2)
if case let (result, overflow) = UInt32.multiplyWithOverflow(a, b), !overflow {
print(result)
} else {
print("overflow")
}