怎么样
//throws: A if something is wrong
// B if something else is wrong
int f();
Run Code Online (Sandbox Code Playgroud)
你不知道。什么都不说意味着它可以抛出任何东西。
我假设您有一些 Java 背景来问这个问题。编译时异常检查是一个失败的 Java 实验。这就是为什么你在其他地方看不到它。
异常处理的一般规则是:尽可能地处理它。这通常归结为try-catch某个非常高的级别,您基本上告诉用户他尝试做的任何事情都失败了。能够从异常中恢复并继续操作的情况非常罕见。
当然,您应该提供函数抛出的异常的文档。我不认为这可以替代 throw 规范(其目的非常不同)。您应该记录函数抛出的异常,并且可以由调用者有意义地处理,而抛出规范必须列出该函数(及其调用的函数)可能出现的任何异常。