1

在 C++ 中,我可以声明一个不能进一步抛出异常的函数,如下所示

int myfunction (int param) throw(); // no exceptions allowed

我可以在 Java 编程语言中有这样的声明吗?

4

3 回答 3

5

不,任何方法总是可以抛出未经检查的异常(RuntimeExceptionError)。

您只需要在方法声明中列出检查的异常(Exception不派生自的子类)。RuntimeException

还有一个丑陋的旁注:虽然编译器确实检查没有抛出未声明的已检查异常,但您可以使用一些丑陋的技巧来解决这个问题(有时称为偷偷摸摸的 throw,Project Lombok明确支持它)。

于 2012-11-08T10:13:43.570 回答
0

不,不是那种意义上的。您可以声明一个函数不引发异常(只需不包含 throws 关键字),但您根本无法阻止函数引发任何异常。想象一下,您将在该函数中除以零 - 程序的行为将是未定义的。

于 2012-11-08T10:14:09.677 回答
0

有一种方法可以确保不会将异常抛出到上一层。只需将所有代码放在 try catch 语句中,这样即使方法中发生任何异常,它也会始终被捕获。

但是,请记住,它只会确保异常不会传播到上一个(调用)层。它肯定不会确保异常不会发生在方法体中

于 2012-11-08T10:16:52.630 回答