【Java】异常

文章目录

  1. 异常概念的介绍
  2. 异常的体系结构
  3. 异常的处理机制
  4. 手动抛出异常
  5. 自定义异常类

异常概念的介绍

异常:在Java语言中,将程序执行中发生的不正常情况称为“异常”(开发过程中的语法错误和逻辑错误不是异常)


异常的体系结构

Java程序在执行过程中所发生的异常可分为两类:

  • Error:Java虚拟机无法解决的严重问题。如:JVM系统内部错误、资源耗尽等严重情况。比如:StackOverflowError和OOM。一般不编写针对性的代码进行处理。
  • Exception:其它因编程错误或偶然的外在因素导致的一般性问题,可以使用针对性的代码进行处理。例如:空指针访问、试图读取不存在的文件、网络连接中断、数组角标越界等

在这里插入图片描述


异常的处理

我们这里说的异常处理,是指Exception,狭义上的异常。只有Exception,才能让我们使用针对性的代码进行处理,所以特别讨论Exception。如果是Error,是一些严重的错误,不可使用针对性的代码进行处理。

对于编译时的异常,我们必须要进行处理,否则编译就无法通过。运行时异常,我们可以不进行处理,一旦发现运行时异常,我们应该需要修改我们的代码。

Java中对于异常的处理,有两种方式:1.try-catch-finally ; 2.throws

try-catch-finally的使用

格式:

try{
	//可能出现异常的代码
}
catch(异常类型1 变量1){
	//处理异常的方式1
}
catch(异常类型2 变量2){
	//处理异常的方式2
}
	...
finally{
	//一定会执行的代码
}

说明:

  • fianlly是可选的
  • 使用try将可能出现异常的代码包装起来,在执行过程中,一旦出现异常,就会生成一个对应异常类的对象,根据此对象的类型,去catch中进行匹配
  • 一旦try中的异常对象匹配到某一个catch时,就进入catch中进行异常的处理,就跳出当前的try-catch结构(在没有写finally的情况)。继续执行其后的代码
  • catch中的异常类型如果没有子父类关系,则谁声明在上,谁声明在下无所谓;catch中的异常类型如果满足子父类关系,则要求子类一定声明在父类的上面。否则,报错
  • 在try-catch-finally结构内声明的变量,出了此try-catch-finally结构不能调用
  • try-catch-finally结构可以嵌套
  • finally中声明的是一定会被执行的代码
throws

"throws + 异常类型"写在方法的声明处。指名此方法执行时,可能会抛出的异常类型。一旦当方法体执行时,出现异常,仍会在异常代码处生成一个异常类的对象,此对象满足throws后异常类型时,就会被抛出。异常代码后续的代码,就不再执行

注意:try-catch-finally:真正的将异常处理掉了;throws的方式只是将异常抛给了方法的调用者。并没有真正的将异常处理掉


手动抛出异常

用throw手动抛出异常(必须抛出一个异常类的对象)


自定义异常类

  • 如何自定义异常类
  • 继承与现有的异常结构:RuntimeException、Execption
  • 提供全局常量:serialVersionUID
  • 提供重载的构造器
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值