Tra*_*ggs 3 switch-statement swift swift2
以下代码示例很好地说明了我所追求的内容.我有一个预期返回给定类型的函数.它基于不完整的开关来做到这一点.但是如果default案件到达,我希望只是产生一个错误.而不是返回optional某人选择!然后在那时死亡的人.
func someFunc(value:UInt8) -> SomeType {
switch value {
case 0x00:
return SomeType.foo()
case 0x13:
return SomeType.bar()
default:
break // BUT I WANT AN ERROR HERE
}
}
Run Code Online (Sandbox Code Playgroud)
Mar*_*n R 11
如果您希望程序在默认情况下终止(因为默认情况表明编程错误),请使用fatalError():
func someFunc(value:UInt8) -> SomeType {
switch value {
case 0x00:
return SomeType.foo()
case 0x13:
return SomeType.bar()
default:
fatalError("Unexpected value \(value)")
}
}
Run Code Online (Sandbox Code Playgroud)
fatalError() 导致程序立即终止,并出现错误消息
fatal error: Unexpected value 99: file main.swift, line 13
该fatalError()函数标有@noreturn(Never在Swift 3中带有返回类型),因此编译器不会抱怨丢失的情况或丢失返回值.
与类似assert()或类似的功能相比assertionFailure(),
fatalError()它永远不会"优化掉",它在调试,优化和未检查的构建中进行评估.