以下代码示例很好地说明了我所追求的内容.我有一个预期返回给定类型的函数.它基于不完整的开关来做到这一点.但是如果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 } }
Martin 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)") } }
fatalError()
导致程序立即终止,并出现错误消息
fatal error: Unexpected value 99: file main.swift, line 13
该fatalError()
函数标有@noreturn
(Never
在Swift 3中带有返回类型),因此编译器不会抱怨丢失的情况或丢失返回值.
与类似assert()
或类似的功能相比assertionFailure()
,
fatalError()
它永远不会"优化掉",它在调试,优化和未检查的构建中进行评估.
如果您希望程序在默认情况下终止(因为默认情况表明编程错误),请使用fatalError()
:
func someFunc(value:UInt8) -> SomeType { switch value { case 0x00: return SomeType.foo() case 0x13: return SomeType.bar() default: fatalError("Unexpected value \(value)") } }
fatalError()
导致程序立即终止,并出现错误消息
fatal error: Unexpected value 99: file main.swift, line 13
该fatalError()
函数标有@noreturn
(Never
在Swift 3中带有返回类型),因此编译器不会抱怨丢失的情况或丢失返回值.
与类似assert()
或类似的功能相比assertionFailure()
,
fatalError()
它永远不会"优化掉",它在调试,优化和未检查的构建中进行评估.