异常定义:
程序在运行时出现不正常情况。
问题也是现实生活中的一个具体事物,可以通过java类的形式进行描述。并封装成对象。Java对不正常情况进行描述后的对象体现。
问题划分:严重/非严重。
严重的:java通过Error类描述。
Error一般不编写针对性的代码进行处理。
非严重的:java通过Exception类进行描述。
对于Exception可以使用针对性的处理方式进行处理。
常见的异常:数组下标越界、空指针......
常见的错误:内存溢出OutofmemoryError
Error或Exception都有一些共性内容,抽取出来成为Throwable类。
Throwable
|--Error
|--Exception
|--RuntimeException
自定义异常:
必须是自定义类继承Exception,或者Throwable,或者Error。
原因:异常体系特点:异常类和异常对象都需要被抛出。这个可抛性是Throwable这个体系独有特点。
throw和throws的区别:
throws使用在函数上,throw使用在函数内。
throws后面跟的异常类。可以跟多个,用逗号隔开。
throw后边跟的是异常对象。
对多异常的处理:
1、声明异常时,越具体越好。
2、多个catch块儿,父类的catch放到最下面。
Exception中特殊的子类异常运行时异常:
如果在函数内抛出该异常,函数上可以不用声明,编译可以通过。
如果在函数上声明了该异常。调用者可以不用进行处理,编译可以通过。
之所以不用在函数声明,是因为不需要让调用者处理。
当该异常发生,希望程序停止。因为在运行时,出现了无法继续运算的情况,希望停止程序后,对代码进行修正。
如果该异常的发生,无法再继续进行运算,就让自定义异常继承RuntimeException。
异常分两种:
1、编译时被检测的异常。
2、编译时不被检测的异常(运行时异常。RuntimeException及其子类)
编译时被检测的异常是可处理的,需要声明出来,被调用者处理。调用者用try catch去处理。
编译时不被检测的异常可只声明或只在内部抛出。
throw、return都是函数结束标识。它们后边的代码都不能执行。
Finally:
finally代码块:定义一定执行的代码。通常用于关闭资源,比如数据库连接。
异常的好处:
1、将问题进行封装。
2、将正常流程代码和问题处理代码相分离,方便于阅读。
总结:
异常处理,多多实践。