gpt4 book ai didi

javascript - Flowtype 函数可能会抛出错误

转载 作者:行者123 更新时间:2023-11-29 19:09:01 26 4
gpt4 key购买 nike

有没有办法明确定义一个函数可以抛出,显然任何函数都可以抛出错误。但我想明确定义一个函数旨在抛出并且可能根本不返回值。

async function falseThrow (promise: Promise<any>, error): any {
let value: any = await promise
if (!value) throw error
return value
}

最佳答案

正如 Nat Mote 在她的回答中强调的那样,无法在流程中对已检查的异常进行编码。

但是,如果您愿意稍微更改编码,您可以做一些等效的事情:

async function mayFail<A, E>(promise: Promise<?A>, error: E): E | A {
let value = await promise
if (!value) {
return error
}
return value
}

现在流程将强制用户处理错误:

const p = Promise.resolve("foo")
const result = await mayFail(p, Error("something went wrong"))

if (result instanceof Error) {
// handle the error here
} else {
// use the value here
result.trim()
}

如果你尝试做类似的事情

const p = Promise.resolve("foo")
const result = await mayFail(p, Error("something went wrong"))
result.trim() // ERROR!

flow 会阻止你,因为你还没有检查 resultError 还是 string,所以调用 trim 不是安全操作。

关于javascript - Flowtype 函数可能会抛出错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40616492/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com