Java中的异常

只愿长相守 提交于 2019-12-04 16:15:14

异常

异常全部继承自超类Throwable

Error错误:

程序运行过程中 非常严重的错误

我们的态度:不需要处理(处理不了),不去掩盖,应该找到根源去修改。

例如:

内存泄漏(死循环)
栈溢出(无限递归)

Exception异常:

小错误,分为运行时异常和编译期异常

运行时异常:

RuntimeException及其子类,编译的时候不报错。 运行的时候才会报错

设计理念:程序员在设计编码的时候,考虑到用户输入的信息可能与期待的不符合,但是当用户输入导致错误的时候不可以因此使程序崩溃。所以设计运行时异常,当用户的输入不符合程序期待的时候,给与用户提示但是程序继续运行。

处理方式:



虽然出异常了,但是依旧可以在异常后执行System.out.println("Awake and unafraid");维持程序运行状态

编译期异常(检查类异常):

Exception(除了 RuntimeException 以其子类)的所有子类。编译的时候就会报出红线,目的是为了让你检查程序。

设计理念:

编译期异常 他是给程序员准备的, 我们在书写代码的时候, 有一些地方 很容易出现错误的,而且程序员也经常不注意,
这时候,Java就设计了编译期异常,目的是为了提示程序员“这个地方很容易出错”,为了提示java让这个地方编译报错。
目的是为了引起程序员的注意。

出现之后程序立刻终止
小的问题,合理的应用程序可能想要捕获的条件,捕获掩盖它

编译期间异常:Exception的子类,书写的过程中还没有运行就报错,这种异常存在就生成不了class文件,不能运行。
例如:
parse()需要抛出异常

Exception的特殊子类RuntimeException运行时异常,其他的子类都是无法运行的编译报错。

书写的过程中,编译过程不会报错,可以通过编译生成class文件,也可以运行,但是运行时出错。
例如:
null.方法(空指针异常)

RuntimeException

编译期间忽略

非RuntimeException

编译期间必须处理

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!