Swift
Целые числа в Swift допустимы. «Они не могут быть бесконечными, как Двойники, - подумал он. У них есть предел.
Превышение этого лимита вызовет ошибку sh.
Приложение A
Int(10000000000000000000)
error: integer literal '10000000000000000000' overflows when stored into 'Int'
Приложение B
Int(pow(Double(1000000000), Double(10)))
Fatal error: Double value cannot be converted to Int because the result would be greater than Int.max
Я наивно подумал про себя: «Эй, это фатальная ошибка. Можно ли отловить ошибку с помощью блока do, catch?»
Нет
Пример C
do {
Int(pow(Double(1000000000), Double(10)))
} catch {
print("safety net")
}
print("good?")
warning: 'catch' block is unreachable because no errors are thrown in 'do' block
Fatal error: Double value cannot be converted to Int because the result would be greater than Int.max
О да. Это правильно! Забыл добавить попробовать
Нет
Приложение D
do {
try Int(pow(Double(1000000000), Double(10)))
} catch {
print("safety net")
}
print("good?")
warning: no calls to throwing functions occur within 'try' expression
warning: 'catch' block is unreachable because no errors are thrown in 'do' block
Fatal error: Double value cannot be converted to Int because the result would be greater than Int.max
Что происходит?
Кто-нибудь может мне это объяснить? Мне бы очень хотелось иметь возможность catch
такой ошибки.
Большое спасибо, это было бы огромным подспорьем!