手动抛出异常而不是在Swift中返回值

时间:2015-02-23 18:54:31

标签: swift exception

func head<T>(xs: [T]) -> T {
    if (xs.count > 0) {
        return xs.first!
    } else {
        NSException(name:"empty list", reason:"empty list", userInfo:nil).raise()
    }
}

此代码无法编译(编译器期望每个分支都有一个return语句,并且不会将NSException识别为控制语句。)

如何更改我的代码以使其编译?

P.S。我不想将返回值更改为Optional

2 个答案:

答案 0 :(得分:0)

您是否可以将NSException重新格式化为可编译的内容?

尝试这个问题的答案:Calling NSException.raise() in Swift

答案 1 :(得分:0)

我需要fatalError("")

func head<T>(xs: [T]) -> T {
    if (xs.count > 0) {
        return xs.first!
    } else {
        fatalError("list is empty")
    }
}

此代码工作得很好。