java 异常处理

异常分类:Error、Exception

Error(错误)

比如 StackOverFlowError、OutOfMemeryError等,前者大多发生在方法递归时忘记加上限制条件,后者大多是内存占用过多。Error属于严重错误,必须停止运行。

Exception(异常)

异常分为检查性异常和非检查异常(运行时异常)

  • 检查异常:在编译阶段编译器能够检查出来的开发者必须要处理的异常,否则不能通过编译。
  • 运行时异常:可以通过编译器的编译,在运行时会产生的异常

常见的异常类型

  • ArrayIndexOutOfBoundsException 数组越界异常
  • ArithmeticException 算数异常
  • NullPointerException 空指针异常
  • ClassNotFoundException 类找不到异常
  • FileNotFoundException 找不到文件异常

 异常处理

异常处理有两种方式:try...catch...和throws。也称为抓抛

try...catch...

语法:

try{
    //可能产生异常的代码块
}catch(异常类型  对象名){
   //处理异常的代码
}finally{
    //代码块
}

其中:catch可以有多个,finall最多有一个,也可以不写。

执行逻辑:

  1. 首先执行try中的代码块,如果没有异常,则执行finally中的代码块。
  2. 如果try中的代码块产生了异常,以此对照catch的参数列表中的异常类型,属于哪一类(其子类也可以),就进入哪个catch的代码块执行。执行完成后继续执行finally中的代码块。

注意:

  1. 若存在多个catch块,则异常类型范围小的放在前面,否则编译报错
  2. try中的代码块,在产生异常的行之后的代码(即使可能产生异常),不会再执行,直接执行catch块的匹配
  3. jdk7及以后,catch的小括号中也已使用“|”符号来捕获多种异常,但是必须是同等级别的异常,不能是有继承关系的异常类型
    如:catch (ArrayIndexOutOfBoundsException|ArithmeticException e)
  4. 不要将大量的代码放在try中,尽量可以缩小产生异常的范围,否则会影响执行效率
  5. 通常在finally中进行资源则清除操作,如:关闭文件、删除临时文件等
  6. finally中的语句,即使try和catch中使用了return或break,也会被执行
  7. 当try和或catch中执行了System.exit(0)时,finally代码块中的内容不会被执行

 throws

throws表示异常抛出给调用者来处理,谁调用谁处理

语法:

修饰符  返回值类型  方法名(参数列表)   throws  异常类型1,异常类型2,...{

}

其中:

  • throws抛出异常后,调用该方法的方法可以继续使用throws继续抛给它的上层调用方法,知道抛给main方法,如果main方法在throws,就会抛给jvm处理。建议不要抛给jvm来处理。
  • throws可以抛出多个异常类型,各个异常类型之间使用逗号隔开

 此外,java还提供了throw关键字,用来在代码中人为抛出一个异常对象,一般配合try...catch...或throws使用

throw new Exception();throw new Exception();//表示抛出一个Exception的对象

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值