16
|
Mohamad Alhamoud · 技术社区 · 15 年前 |
![]() |
1
26
那是因为它是一个 未检查的 例外。它不需要显式声明或捕获。也看到 Sun tutorial on the subject .
更新:
一般来说,你只应该
如果存在应该引发运行时异常的特定情况,并且不能使用它的某个特定子类,那么应该在新异常的javadoc和调用方法(例如)中对其进行扩展并正确地记录。
简而言之:
|
![]() |
2
3
让我们这样争论吧。如果nullPointerException被设计为编译时异常呢?如果这样做了,编译器必须严格检查变量是否为空。这是不可能做到的。
这里编译器无法检查obj是否可以为空。但是,在使用空指针方案时,必须引发一些错误/异常。 |
![]() |
3
2
参见JLS中的第11章,异常,特别是11.2,异常的编译时检查。 |
![]() |
4
2
根据语言规范,
非强制
是
编译时未检查
这意味着编译器不需要方法来捕获或指定(使用
所以因为
|
![]() |
5
1
因为不禁止抛出运行时异常,也不必声明运行时异常。你的程序是一个有效的Java程序,所以编译器没有理由抱怨。 |
![]() |
6
1
基本上,未捕获的异常只是显示消息和终止应用程序的简写。 你为什么要这么做?在某些情况下,您可以检测到某些错误、某些文件未加载、API丢失、某些数据因某种原因损坏或其他一百万个错误中的一个。如果不抛出异常,应用程序可能会在另一个点崩溃,或者在最坏的情况下,在错误升级时继续运行,使调试更加困难。 重要的是要理解,一个人抛出了一个异常,因为有一个错误,异常不是错误,它只是一个信使。 |
![]() |
7
1
这个论坛上的大多数答案都在讨论异常层次结构,Java编译器没有捕捉到它们,但我会尝试从设计的角度来回答更多的问题,以及为什么事情可能是这样设计的。 基本上,当您调用一个函数(或编写一些代码)时,可以根据三种不同的情况从函数中抛出异常:
1类例外情况通常设计为
第二种类型的异常通常建模为
一般来说,第三种类型的异常甚至不需要担心,因为您不能在应用程序代码的每个语句中意外出现错误处理。但有时您可以将一个全局处理程序放在调用堆栈中相当高的某个位置,从该位置执行几乎所有应用程序代码,并以通用方式处理它,这样您的应用程序就不会因意外错误而崩溃。
例如,如果您正在运行一个Web应用程序,您可以配置servlet容器以发送一个通用的
|
![]() |
Konvt · 标准库中异常构造函数参数类型问题 6 月前 |
![]() |
EarthTurtle · 调整泛型抛出迭代器的异常类型 1 年前 |
![]() |
ê¹ë¯¼ì¬ · 在六边形的建筑中,例外情况应该扔到哪里? 1 年前 |
|
tariqalr · 带有try-catch块的无限循环的编译和返回值 1 年前 |
![]() |
CheezGuy · Python尝试/不停止错误除外 1 年前 |