java 进阶(3)异常处理机制一:try-catch-finally

在编写程序时,经常可能出现的错误的地方加上代码检测,如x/y时候检测分母是否为0,数据为空,输入的为字符串等,如果if过多会导致代码加长臃肿,可读性差,因此采用异常处理机制

1. java异常处理

java常用的异常处理机制,是将异常处理的程序代码集中在一起,与正常的代码分开,使得程序简洁、优雅、并易于维护

2. 异常的处理:抓抛模型

过程一:“抛”:程序在正常执行时,一旦出现异常,就会在异常代码处生成一个对应异常类的对象。

并将此对象抛出,一旦抛出对象以后,其后的代码不再执行

过程二:“抓”:可以理解为异常处理方式

3. java异常处理的方式:

 

 方式一:try-catch-finally(自己解决)

try{

//可能出现异常的代码

}catch(异常类型1 变量名1){

//处理异常的方式1

System.out.println(e.getMessage());返回string

E.printStackTrace();较常用

 

}

catch(异常类型2变量名2){

//处理异常的方式2

}

catch(异常类型3 变量名3){

//处理异常的方式3

}

……

finally{

//一定会执行的代码

//就算是catch出现异常也会执行

//像数据库,输入输出流,网络编程socket等资源,jvm不能自动的回收,我们需要自己手动的进行资源的释放,此时资源的释放就需要声明在finally中

 

}

 

说明:

使用try-catch-finally将编译时候异常可能出现的异常延迟到运行时出现

 ②方式二:throws+异常处理(向上报)

一旦当方法体执行时,出现异常,仍会在异常代码处生成一个异常类对象,此对象满足throw后异常类型时,抛出。异常后续代码不被执行

4. 开发中如何选择哪种方式处理异常?

如果父类中被重写的方法没有throws方式处理异常,则子类重写的方法也不能使用throws,意味着如果子类重写的方法有异常,必须使用try-catch-finally处理

  • 执行方法a调用其他的方法,并且是递归的关系,那么使用throws,方法a可try-catch-finally
  • throws只是将异常抛给方法的调用者,并没有真正将异常处理掉
  • 方法重写规则之一:子类重写的方法抛出的类型不大于父类被重写抛出的异常
  • throws+异常处理 写在方法的声明出,指明此方法执行时,可能抛出的异常类型
  • finally不一定要写
  • try出现异常,出现异常类,后面不再执行,直接跳catch,继续执行后面的代码
  • catch中的异常类型如果没有子父类关系,则谁声明在上谁声明在下无所谓
  • 如果有子父类关系,则要求子类一定声明在父类的上面,否则报错
  • 在try结构中声明的变量出了try结构不能被调用
  • try-catch-finally可以嵌套
  • 开发中由于运行时异常比较常见 ,我们通常不针对运行时异常编写try-catch-finally
  • 针对编译时异常,我们说一定要考虑异常的处理·
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值