当前位置:  开发笔记 > IOS > 正文

Swift为默认返回值生成错误

如何解决《Swift为默认返回值生成错误》经验,为你挑选了1个好方法。

以下代码示例很好地说明了我所追求的内容.我有一个预期返回给定类型的函数.它基于不完整的开关来做到这一点.但是如果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()它永远不会"优化掉",它在调试,优化和未检查的构建中进行评估.



1> Martin R..:

如果您希望程序在默认情况下终止(因为默认情况表明编程错误),请使用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()它永远不会"优化掉",它在调试,优化和未检查的构建中进行评估.

推荐阅读
mobiledu2402852413
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有