gpt4 book ai didi

flutter - Dart 中有没有办法将函数标记为抛出异常?

转载 作者:行者123 更新时间:2023-12-03 02:43:54 32 4
gpt4 key购买 nike

我试图在 Flutter/Dart 中找到一种方法来标记一个在执行过程中可能抛出异常的函数。在文档和谷歌中搜索一段时间后,我没有找到任何方法。

在其他语言中,例如 Swift、Java、Kotlin 等,我知道我们有这样的机制。
Swift 中的示例代码是:

func doSomething() throws { ... }

有谁知道这在 Dart 中是否存在?
我认为它会很有用。

如果由于 Dart 语言设计它不存在,那么也许任何人都可以解释这个决定背后的原因。

提前致谢!

最佳答案

Dart 无法将函数标记为可能抛出。
应该假定所有函数都可能抛出(如果没有其他原因,则是因为内存不足或堆栈溢出情况)。
如果你看看 Swift,throws是关于异常,而不是错误。 Dart 不区分两者,你可以扔任何东西。 Swift 将自己置于 Java(“必须声明所有抛出的异常”)和 Dart 或 C#(“无法声明异常”)之间的位置。
将函数标记为“抛出”对编译器没有任何帮助,因为它必须假设所有其他函数也可能如此。 Swift 方法是为了确保不会忽略显着标记的异常。除非你愿意,否则你可以try!它们并将异常变成错误。
如果函数确实作为正常使用的一部分抛出,您应该在函数的文档中记录它。
Dart 也有函数类型的问题。是来自 int 的函数至 int与来自 int 的另一个函数相同的类型至 int如果后者可以扔?将函数类型分为抛出和非抛出会很快变得复杂。如果您想指定它抛出的内容,则更是如此。这并非不可能,但这是一种复杂的情况。
您将通过 Dart 空安全更新(目前正在处理)获得的一件事是一种声明函数始终抛出的方法。如果您使返回类型 Never在空安全代码中,类型系统将阻止您返回任何值,并且由于函数调用必须以返回值或抛出对返回类型 Never 的函数的调用结束。只能以 throw 结束。

关于flutter - Dart 中有没有办法将函数标记为抛出异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60208027/

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