9.17异常处理

什么是异常?
    对于程序执行时出现的意外情况,在java语言中被称为异常(Exception),
出现异常时进行的相关处理则称为异常处理。

java语言中使用一些专门的类来描述不同的异常情况,而这些专门的类称为
异常类,所有的异常类组成了java语言的异常类继承树体系。

常见的异常类
Exception                   异常继承树的根类
RuntimeException            运行时异常
ArithmeticException         算术错误异常(如除数为0)
IllegalArgumentException    方法接收到非法参数异常
NullPointException          空引用异常
ClassNotFoundException      不能加载所需的类异常
NumberFormatException       数值转化格式异常(如字符串转float类型)
IOException                 I/O异常的根类
FileNotFounException        找不到文件异常
ArrayIndexOutofBoundsException  数组访问越界异常
EOFException                文件结束异常
InterruptedException        线程中断异常



java异常处理的机制
异常处理是java语言中的一种机制,是java语法的一个特色功能,
通过恰当的使用该机制,可以使得java语言编写的项目更加稳定。


java程序在执行过程中如果出现异常,会自动实例化异常类对象,该异常对象
将被自动提交给JVM,当JVM接收到以异常对象时,会寻找能处理这一异常的代码,
并把当前异常对象交给其处理,这一过程称为捕获异常。如果JVM找不到可以捕获
异常的代码,则java程序将异常退出。

java中使用try和catch关键字捕获异常,格式如下:
try  {
     //代码块(可能出现异常的代码)
}  catch(异常类型1 exception)  {
     //对异常进行处理的代码块
}  catch(异常类型 2  exception)  {
     //对异常进行处理的代码块
}  catch(异常类型3  exception)  {
    //对异常进行处理的代码块
}finally{

}    //(加上关键字finally)无论是否异常,始终都会被执行的代码块


尽量把最可能出现的异常类放在上面,根类Exception放在下面

注意,当try的代码块中有return时,执行return前要先检测是否有finally,若有,则先执行finally后的代码块再执行return




java是使用throw和throws关键字抛出异常

throw用于在代码中抛出异常,格式如下:
throw new 异常类;

throws用于在方法中抛出所有的异常,而它本身不捕获这些异常。这些异常将
被抛给方法的调用者。调用者需要在方法中捕获异常,如果不捕获则必须在方法中
使用throws继续将异常抛出,知道异常被处理。
常用格式如下:

返回值类型      方法名  (方法参数)  throws异常类1,异常类2,....{
   //方法体
   }

异常分类:
非受检异常:指编译器不要求强制处理的异常。一般是因程序员代码编写方式不当
而导致的异常。RuntimeException异常类以及它的子类都属于非受检异常。
受检异常:指编译器要求必须强制处理的异常,即程序在运行时由于外界因素导致的异常。
ClassNotFoundException:  没有找到具有指定名称类的异常
IOException:                      操作文件时发生的异常
SQLException:                  操作数据库时发生的异常


java异常处理机制的特点
1.可以将异常对象在方法调用中传递,通过传递可以将异常对象传递到合适
的位置再处理。使用这种机制,使得java语言的异常处理更加灵活。
2.可以在源代码级别将正常执行的逻辑代码和异常处理的代码相分离,更加便于
代码阅读和维护。
3.异常处理机制也存在一些弊端,过度使用异常处理将降低程序的执行效率,
增加语法的复杂度。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值