Gab*_*i D 6 try-catch throw dart flutter
我试图在 Flutter/Dart 中找到一种方法来标记一个在执行过程中可能抛出异常的函数。在文档和谷歌中搜索一段时间后,我没有找到任何方法。
在其他语言中,例如 Swift、Java、Kotlin 等,我知道我们有这样的机制。Swift 中的示例代码是:
func doSomething() throws { ... }
Run Code Online (Sandbox Code Playgroud)
有谁知道这在 Dart 中是否存在?我认为它会很有用。
如果由于 Dart 语言设计它不存在,那么也许任何人都可以解释这个决定背后的原因。
提前致谢!
lrn*_*lrn 10
Dart 无法将函数标记为可能抛出。
应该假定所有函数都可能抛出(如果没有其他原因,则是因为内存不足或堆栈溢出情况)。
如果你看看 Swift,它throws是关于异常,而不是错误。Dart 不区分两者,你可以扔任何东西。Swift 将自己置于 Java(“必须声明所有抛出的异常”)和 Dart 或 C#(“无法声明异常”)之间的位置。
将函数标记为“抛出”对编译器没有任何帮助,因为它必须假设所有其他函数也可能如此。Swift 方法是为了确保不会忽略显着标记的异常。除非您愿意,否则您可以使用try!它们并将异常转换为错误。
如果函数确实作为正常使用的一部分抛出,您应该在函数的文档中记录它。
Dart 也有函数类型的问题。从功能int到int同类型的其他功能,从int到int,如果后者能够抛出?将函数类型分为抛出和非抛出会很快变得复杂。如果您想指定它抛出的内容,则更是如此。这并非不可能,但这是一种复杂的情况。
您将通过 Dart 空安全更新(目前正在处理)获得的一件事是一种声明函数始终抛出的方法。如果您在返回类型Never的空安全的代码,那么该类型系统会阻止您返回任何值,因为函数调用必须由返回值或抛出,调用一个函数的返回类型结束Never可以只结束通过投掷。
| 归档时间: |
|
| 查看次数: |
1636 次 |
| 最近记录: |