Java异常机制

什么是异常?

程序在执行中发生了不正常的情况,这种情况就叫做异常。

为了应对程序中的异常,java提供了异常机制,它的作用:

java语言是很完善的语言,提供了异常的处理方式。当程序执行出现异常的时候,java会把异常信息打印输出到控制台,以供参考。程序员看到异常信息后,会对程序进行修改,让程序更加健壮,这体现了java的健壮性。

1. Error

2. Exception

异常分为编译时异常和运行时异常,他们都发生在运行阶段,是不会发生在编译阶段的。

那为什么有编译时异常呢?

编译时异常是必须在编译阶段预先处理的,如果不处理编译器报错。并且异常的发生就是new了异常对象,而创建对象是发生在运行阶段的,所以异常都是发生在运行阶段的。

编译时异常概率较高,可以进行预先处理;运行时异常概率较低,不能进行预先处理

编译时异常(受检异常和受控异常)和运行时异常(未受检异常、未受控异常)

两者之间的区别:

运行时异常:所有的RuntimeException及子类都属于运行时异常。运行时异常在编写程序阶段,可以选择处理或不处理。运行时异常发生概率较低。

编译时异常:所有的Exception的直接子类,都叫做编译时异常。编译时异常必须在编写程序的时候预先对异常进行处理,如果不处理编译器报错。编译时异常发生概率较高。这个必须要处理,即在我们的编译器中代码不变红

处理方式

  • 在方法声明的位置,使用throws关键字,抛出异常,(抛给上一级)。
  • 使用try catch语句进行异常捕捉。

编译时异常

方法一:利用try catch捕捉异常,在当前文件就可以解决。

语法如下:

try{
    //可能会出错的代码块
}catch(Exception e){
    //出现异常后,执行的语句
    e.;
}finally{
    //通常用来释放资源
}

try catch之后的语句正常执行。try内部的捕捉代码出现错误,内部的代码不会执行。

方法二:一级一级往上抛,直到解决为止。可以抛出具体异常,也可以抛出父类异常。最终抛给JVM。(抛给上级,让上级处理,自己并不进行处理)

抛出异常的语句之后的语句不会执行。

运行时异常

可以处理,也可以不处理

处理方式:可以使用try catch来对可能存在异常的代码进行捕捉。

异常对象

异常对象的生成:
由虚拟机自动生成:程序运行过程中,虚拟机检测到程序发生了问题,如果在当前代码中没有找到相应的处理程序,就会在后台自动创建一个对应异常类的实例对象并抛出——自动抛出。
由开发人员手动创建:Exception exception = new Exception();——创建好的异常对象不抛出对程序没有任何影响,和创建一个普通对象一样。
只有进行打印或者throw抛出才可以中断程序。

我们可以利用Exception类创建异常对象。

``

public static void main(String[] args) {
    Exception exception = new Exception("此处有异常");
    String message = exception.getMessage();
    System.out.println(message);
    exception.printStackTrace();

}

异常对象的方法:

getMessage:获取异常信息。

printStackTrace():打印异常跟踪信息和异常位置。(常用

异常体系结构图

自定义异常

作用:能够使自己创建的类更加符合实际开发形式,能够抛出异常跟踪信息。

  • 继承Exception或RuntimeException。
  • 提供两个构造方法,一个无参构造,一个参数为String参数构造。

3. try catch语法

语法如下:

try{
    //可能会出错的代码块
}catch(Exception e){
    //出现异常后,执行的语句
    e.;
}finally{
    //通常用来释放资源
}

分析:

  1. catch()中的异常,可以写具体异常,也可以写父类异常
  2. catch()可以写多个,写多个具体异常。一个一个精确的处理。
  3. 多个catch捕捉,建议从小到大,从上到下的原则
  4. finally中的代码是最后执行,并且一定会执行(即使try块中有return)。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值