1.异常

来源:互联网 发布:音频剪切合并软件 mac 编辑:程序博客网 时间:2024/06/05 11:30

异常体系:

  • |——Throwable (实现类描述java的错误和异常)
    • |——Error (错误)
    • |——Exceprion (异常)
      • |——RuntimeException (运行时异常)
      • |——非运行时异常(编译时异常/受检异常)


Throwable常用方法
  • toString()    返回当前异常对象的完整类名
  • getMessage()    返回的是当前创建Throwable传入的字符串信息
  • printStackTrace()    打印异常的栈信息

Error (错误):一般是jvm或硬件引发的问题,一般不通过代码去处理。

Exceprion (异常):需要通过代码去处理

    RuntimeException (运行时异常):如果一个方法内部抛出了一个运行时异常,方法上可以声明也可以不声明,调用者可以处理也可以不处理(运行时异常都是可以通过良好的编程习惯避免的,所以没有严格要求处理)

    编译时异常:如果一个方法内部抛出了一个编译时异常对象,那么方法上必须要声明,调用者也必须要处理

异常的处理:


1.捕获处理:

try {
可能发生异常的代码 
} catch ( 捕获的异常类型  变量名 ) {
处理异常的代码
}

注意细节:

  1. try块代码出现异常,经过处理后,try-catch块外面的代码可以正常执行
  2. try块中,异常代码之后的代码不会执行
  3. 一个try块后面可以跟多个catch块
  4. 一个try块可以捕获多种异常类型,但是捕获的异常类型必须从小到大捕获,否则编译报错

2.抛出处理:

方法定义  throws Exception1, Exception2,···,··· {  //声明异常,throws 后跟异常类,可以一次声明多种类型的异常,通知方法调用者
    throw new Exception1("抛出异常");  // throw关键字后面接受的是具体的异常的对象
}

注意细节:
  1. 如果一个方法内部抛出了一个异常,那么必须在方法上声明抛出
  2. 如果调用了一个声明抛出的方法,那么调用者必须要处理异常
  3. 如果一个方法内部抛出了一个异常对象,那么throw语句后面代码都不会执行了(一个方法遇到了throw关键字,方法会马上停止执行
  4. 在一种情况下,只能抛出一种类型异常对象

3.自定义异常:

自定义一个类继承Exception即可

finally块

使用前提:必须存在try块才能使用
finally是在return语句执行之后,返回之前执行的(此时并没有返回运算后的值,而是先把要返回的值保存起来,不管finally中的代码怎么样,返回的值都不会改变,仍然是之前保存的值)

finally块代码在任何情况下都会执行,除了jvm退出的情况【不管有木有出现异常,finally块中代码都会执行;当try和catch中有return时,finally仍然会执行】
适合做资源释放的工作,可以保证资源文件在任何情况下都被释放。