Java中的异常

一、什么是异常?

异常:程序在运行的过程中发生的错误或问题。

二、异常的分类

1、Error

error表示错误的意思

程序出现错误,程序会崩溃,JVM无法解决,程序无法恢复,只能重启应用。

比如内存溢出(out of memory)错误

2、Exception

Exception是异常的意思。

异常是程序在编译运行过程中出现的异常事件,比如:

除数为0的情况,数组下标越界等异常事件。

1)运行时异常

运行时异常(RuntimeException):程序在运行过程中出现的异常,不要求我们做处理。

常见的运行时异常:

1ArithmeticException 数学运算异常

2NullPointerException 空指针异常

3ArrayIndexOutOfBoundsException 数组下标越界异常

4ClassCastException 类型转换异常

5NumberFormatException 数字格式不正确异常[]

2)编译时异常

编译异常:

在编程的过程中,必须显示处理,否则编译无法通过。

常见的编译异常:

FileNotFoundException (文件找不到)

ClassNotFoundException(类找不到异常)

SQLException(操作数据库时出现的异常)

  • 异常的处理

编译异常需要我们处理,那么如何处理呢?

程序员自行处理/抛出异常

1、编程人员自行处理

1)我们所写的程序在编译阶段就告诉我们可能会出现异常,所以我们不确定程序是否能够执行成功,那么我们尝试执行程序。

2)假设程序执行的过程中,出现了异常那么我们就要把这个异常捕获到。

3)有些业务要求无论程序是否出现异常,总之都会做某一些业务操作。

尝试:try

捕获:catch

总之/最后:finally

用法:

try{

//可能发生异常的语句

}catch(Exception e){

//需要捕获的异常,对异常进行处理

}finally{

//无论是否发生异常,总会执行的代码

}

1)异常对象信息的获取

常用的方法主要有两种:

1、getMessage() :取得异常描述信息。

2、printStackTrace():取得异常的堆栈信息(比较适合于程序调试阶段):;

2)异常处理原理

try{

//可能发生异常的语句

}catch(Exception e){

//需要捕获的异常,对异常进行处理

}finally{

//无论是否发生异常,总会执行的代码

}

异常的处理原理:

1)当try结构中的语句发生异常

2)系统将异常封装成Exception对象 发送给catch

3)编程人员在catch结构中对异常对象进行处理

4)出现异常的语句之后的语句不会执行。

省略finally语句块

try-with-resources

JDK7 之后,Java 新增的 try-with-resource 语法糖来打开资源,并且可以在语句执行完毕后确保每个资源都被自动关闭。

try(InputStream iStream = new FileInputStream("D:/dd.txt")) {

} catch (Exception e) {

}

  1. 抛出异常

通过throws/throw关键字,将异常抛出,交给调用者处理。

throws 关键字用于在方法声明中指定可能会抛出的异常类型。

throw 关键字用于在代码中抛出异常。

1)throws

throws 关键字用于在方法声明中指定可能会抛出的异常类型。

1)通过throws关键字,将异常抛出,交给调用者处理。

2)throws后面的异常类型可以是方法中产生的异常类型,也可是其父类。

2)throw

语法:throw new 异常类型("异常信息");

throw 关键字用于在当前方法中抛出一个异常。

public void checkNumber(int num) {

  if (num < 0) {

    throw new IllegalArgumentException("数字不能小于0");

  }

}

  1. throw和throws的区别

throw 关键字用于在代码中抛出异常。

throws 关键字用于在方法声明中指定可能会抛出的异常类型。

  • 自定义异常

1、为什么要自定义异常?

当程序出现异常的时候,而这个异常信息在Throwable子类(Error/Exception)中没有描述的时候,我们可以自定义异常来描述该错误信息。

2、如何实现自定义异常?

1自定义异常

2继承Exception或RuntimeException

3自定义“运行时异常

自定义异常类继承RuntimeException

4)自定义“编译异常

继承Exception

自定义编译异常需要处理(抛出或者try catch

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值