异常
异常全部继承自超类Throwable
Error错误:
程序运行过程中 非常严重的错误
我们的态度:不需要处理(处理不了),不去掩盖,应该找到根源去修改。
例如:
内存泄漏(死循环)
栈溢出(无限递归)
Exception异常:
小错误,分为运行时异常和编译期异常
运行时异常:
RuntimeException及其子类,编译的时候不报错。 运行的时候才会报错
设计理念:程序员在设计编码的时候,考虑到用户输入的信息可能与期待的不符合,但是当用户输入导致错误的时候不可以因此使程序崩溃。所以设计运行时异常,当用户的输入不符合程序期待的时候,给与用户提示但是程序继续运行。
处理方式:
虽然出异常了,但是依旧可以在异常后执行System.out.println("Awake and unafraid");维持程序运行状态
编译期异常(检查类异常):
Exception(除了 RuntimeException 以其子类)的所有子类。编译的时候就会报出红线,目的是为了让你检查程序。
设计理念:
编译期异常 他是给程序员准备的, 我们在书写代码的时候, 有一些地方 很容易出现错误的,而且程序员也经常不注意,
这时候,Java就设计了编译期异常,目的是为了提示程序员“这个地方很容易出错”,为了提示java让这个地方编译报错。
目的是为了引起程序员的注意。
出现之后程序立刻终止
小的问题,合理的应用程序可能想要捕获的条件,捕获掩盖它
编译期间异常:Exception的子类,书写的过程中还没有运行就报错,这种异常存在就生成不了class文件,不能运行。
例如:
parse()需要抛出异常
Exception的特殊子类RuntimeException运行时异常,其他的子类都是无法运行的编译报错。
书写的过程中,编译过程不会报错,可以通过编译生成class文件,也可以运行,但是运行时出错。
例如:
null.方法(空指针异常)
RuntimeException
编译期间忽略
非RuntimeException
编译期间必须处理