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

Manually throw exception instead of returning value in Swift

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。我不想将 return 值更改为 Optional

能否将 NSException 重新格式化为可以编译的格式?

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

我需要fatalError("")

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

这段代码工作得很好。