Java异常分类及处理
一、概念
如果某个方法不能按照正常的途径完成任务,就可以通过另一种路径退出方法。在这种情况下
会抛出一个封装了错误信息的对象。此时,这个方法会立刻退出同时不返回任何值。另外,调用
这个方法的其他代码也无法继续执行,异常处理机制会将代码执行交给异常处理器。
二、异常分类
Throwable 是 Java 语言中所有错误或异常的超类,在 Java 中只有 Throwable 类型的实例才可以被抛出(throw)或者捕获(catch),它是异常处理机制的基本组成类型。
实例分为 Error 和 Exception 两种。
2.1、Error
Error 类是指 java 运行时系统的内部错误和资源耗尽错误。应用程序不会抛出该类对象。如果
出现了这样的错误,除了告知用户,剩下的就是尽力使程序安全的终止。
2.2、Exception
Exception 又有两个分支 , 一个是运行时异常 RuntimeException , 一 个是检查异常 CheckedException。
RuntimeException 如 :NullPointerException 、 ClassCastException ;
CheckedException 如: I/O 错误导致的 IOException、SQLException。
RuntimeException 是那些可能在 Java 虚拟机正常运行期间抛出的异常的超类。 如果出现 RuntimeException,那么一
定是程序员代码书写导致的错误.
CheckedException:一般是外部错误,这种异常都发生在编译阶段,Java 编译器会强
制程序去捕获此类异常,即会出现要求你把这段可能出现异常的程序进行 try catch,该类异常一
般包括几个方面:
- 试图在文件尾部读取数据
- 试图打开一个错误格式的 URL
- 试图根据给定的字符串查找 class 对象,而这个字符串表示的类并不存在
三、异常的处理方式
3.1、不处理
遇到异常问题不进行具体处理,而是继续抛给调用者 (throw,throws)
抛出异常有三种形式,一是 throw,再就是 throws,还有一种系统自动抛异常。
public static void main(String[] args) {String s = "abc";if(s.equals("abc")) {// 手动抛出一个数字格式化异常throw new NumberFormatException();} else {System.out.println(s);}
}int div(int a,int b) throws Exception{return a/b;
}
3.2、处理
try catch 捕获异常针对性处理方式
####四、Throw 和 throws 的区别
throws 用在函数上,后面跟的是异常类,可以跟多个;
语法:(修饰符)(方法名)([参数列表])[throws(异常类)]{…}
public void doA(int a) throws Exception1,Exception3{…}
throw 用在函数内,后面跟的是异常对象。
throws E1,E2,E3只是告诉程序这个方法可能会抛出这些异常,方法的调用者可能要处理这些异常,而这些异常E1,E2,E3可能是该函数体产生的。
throw则是明确了这个地方要抛出这个异常。
结合来看:
void doA(int a) throws IOException,{try{......}catch(Exception1 e){throw e;}catch(Exception2 e){System.out.println("出错了!");}if(a!=b)throw new Exception3("自定义异常");
}
throws 用来声明异常,让调用者知道该功能可能会出现的问题(比如上方的 IO 异常),可以给出预先的处理方式;
throw 抛出具体的问题对象,执行到 throw,功能就已经结束了,跳转到调用者,并将具体的问题对象抛给调用者。
也就是说 throw 语句独立存在时,下面不要定义其他语句,因为执行不到。
概括:
throws 表示出现异常的一种可能性,并不一定会发生这些异常;
throw 则是抛出了异常,执行 throw 则一定抛出了某种异常对象。
五、总结
了解 Exception、Error 两种异常的区别,面试可能会问。
区分 throws、throw使用维度。
如果文章有错的地方欢迎指正,大家互相留言交流。习惯在微信看技术文章,想要获取更多的Java资源的同学,可以关注微信公众号:niceyoo
Java异常分类及处理相关推荐
- JAVA异常分类和处理
JAVA异常分类和处理 参考文章: (1)JAVA异常分类和处理 (2)https://www.cnblogs.com/Mr-RanX/p/11279667.html 备忘一下.
- Java异常分类和关系
Java异常分类和结构,包括Throwable.Exception.Runtime Exception等. 还包括unchecked exception.checked exception Java异 ...
- 转:Java异常分类以及相应处理机制
1. 异常机制 异常机制是指当程序出现错误后,程序如何处理.具体来说,异常机制提供了程序退出的安全通道.当出现错误后,程序执行的流程发生改变,程序的控制权转移到异常处理器. 传统的处理异常 ...
- java 异常分类与处理要机制_Java异常分类,异常处理及异常处理机制
1.异常机制 异常机制是指程序出现错误后,程序如何处理.具体来说,异常机制提供了程序退出的安全通道.当出现错误后,程序执行的流程发生改变,程序的控制权转移到异常处理器. 2.异常的分类 异常的继承结构 ...
- java异常分类三大类_JAVA 中异常的分类
JAVA中的异常可以大体上分为三大类: Error,RuntimeException,Exception 基类Throwable派生的. 使用的方法也是基本一致的,都是通过关键字throw+Throw ...
- java异常统一处理_Java 代码中的全局异常处理
最近接手一个新项目,写用例的时候去翻看代码,发现部分代码里缺少基本的异常处理,包括对参数异常以及业务异常的处理.对照之前负责过的异常处理做得比较好的项目,给开发提了几点建议,顺便又去翻看了之前项目的代 ...
- Java:异常的概念及分类、异常的处理、异常抛出及自定义异常
异常概念 异常分类 Java异常处理机制 try ...catch...finally throw和throws 自定义异常 一.异常的概念 什么是异常? ...
- Java基础—异常分类及处理
目录 一.概念 三.异常的处理方式 四.throw 和 throws 的区别: 一.概念 如果某个方法不能按照正常的途径完成任务,就可以通过另一种路径退出方法.在这种情况下会抛出一个封装了错误信息的对 ...
- 多态的概念、对象上下转型、多态的应用、异常(异常概念、异常分类、java异常处理机制、try...catch...finally、throw和throws、自定义异常)
多态的概念: 多态性是指同一个操作作用于某一类对象,可以有不同的解释,产生不同的执行结果. 多态存在的三个必要条件: ① 需要存在继承或实现关系 ② 同样的方法调用而执行不同的操作.运行不同代码(重写 ...
最新文章
- 如何使用Visual Studio Code调试PHP CLI应用和Web应用
- 知乎万赞:人并不是活一辈子,而是活几个瞬间
- java中图片文件的传输及显示(Socket以及ServerSocket演示)
- 终端母体服务器是心识,自我意识的觉醒与重返母体的归属.doc
- 【译】渐进式 Web App 的离线存储
- Linux下一块网卡设置多个IP地址
- Direct3D学习笔记
- discuz内置代码
- 数据挖掘的9大成熟技术和应用
- 跨考计算机 专硕还是学硕,考研我该如何抉择!专硕学硕不纠结
- 使用VMware启动centos6.6并使用Qume+kvm虚拟化linux和windows虚机
- leetcode33. 搜索旋转排序数组
- 双极性归零码 matlab,双极性不归零码的Matlab实现
- win快捷键_终于找到了!10个Win+组合快捷键,让你的工作效率提升10倍
- 100 道 Linux 常见面试题,建议收藏!
- 《周志明的软件架构课》学习笔记 Day15
- 怎么编辑gif动态图片?gif动图编辑的操作步骤
- 2015链家网面试记录
- 《面朝大海,春暖花开》(海子)
- 生死狙击无法显示服务器,生死狙击页面无法显示
热门文章
- [html] html和html5有什么区别呢?
- [css] 用css3实现伪3D的文字效果
- [js] AudioContext有什么应用场景?
- 前端学习(2175):认识路由文件的懒加载
- 前端学习(1407):多人管理27代码优化
- 第六十八期:做中台找死,不做中台等死?
- 关于用display:table让元素居中的小结
- 条件变量 ---C++17 多线程
- mysql-5.7.13-winx64如何安装_mysql 5.7.13 winx64安装配置方法图文教程
- 奥特曼传奇英雄存档丢了怎么找回_热血传奇:道士最帅武器—玄天