一、概念

如果某个方法不能按照正常的途径完成任务,就可以通过另一种路径退出方法。在这种情况下
会抛出一个封装了错误信息的对象。此时,这个方法会立刻退出同时不返回任何值。另外,调用
这个方法的其他代码也无法继续执行,异常处理机制会将代码执行交给异常处理器。

二、异常分类

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,该类异常一
般包括几个方面:

  1. 试图在文件尾部读取数据
  2. 试图打开一个错误格式的 URL
  3. 试图根据给定的字符串查找 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异常分类及处理相关推荐

  1. JAVA异常分类和处理

    JAVA异常分类和处理 参考文章: (1)JAVA异常分类和处理 (2)https://www.cnblogs.com/Mr-RanX/p/11279667.html 备忘一下.

  2. Java异常分类和关系

    Java异常分类和结构,包括Throwable.Exception.Runtime Exception等. 还包括unchecked exception.checked exception Java异 ...

  3. 转:Java异常分类以及相应处理机制

    1. 异常机制       异常机制是指当程序出现错误后,程序如何处理.具体来说,异常机制提供了程序退出的安全通道.当出现错误后,程序执行的流程发生改变,程序的控制权转移到异常处理器. 传统的处理异常 ...

  4. java 异常分类与处理要机制_Java异常分类,异常处理及异常处理机制

    1.异常机制 异常机制是指程序出现错误后,程序如何处理.具体来说,异常机制提供了程序退出的安全通道.当出现错误后,程序执行的流程发生改变,程序的控制权转移到异常处理器. 2.异常的分类 异常的继承结构 ...

  5. java异常分类三大类_JAVA 中异常的分类

    JAVA中的异常可以大体上分为三大类: Error,RuntimeException,Exception 基类Throwable派生的. 使用的方法也是基本一致的,都是通过关键字throw+Throw ...

  6. java异常统一处理_Java 代码中的全局异常处理

    最近接手一个新项目,写用例的时候去翻看代码,发现部分代码里缺少基本的异常处理,包括对参数异常以及业务异常的处理.对照之前负责过的异常处理做得比较好的项目,给开发提了几点建议,顺便又去翻看了之前项目的代 ...

  7. Java:异常的概念及分类、异常的处理、异常抛出及自定义异常

    异常概念 异常分类   Java异常处理机制 try ...catch...finally throw和throws 自定义异常 一.异常的概念         什么是异常?             ...

  8. Java基础—异常分类及处理

    目录 一.概念 三.异常的处理方式 四.throw 和 throws 的区别: 一.概念 如果某个方法不能按照正常的途径完成任务,就可以通过另一种路径退出方法.在这种情况下会抛出一个封装了错误信息的对 ...

  9. 多态的概念、对象上下转型、多态的应用、异常(异常概念、异常分类、java异常处理机制、try...catch...finally、throw和throws、自定义异常)

    多态的概念: 多态性是指同一个操作作用于某一类对象,可以有不同的解释,产生不同的执行结果. 多态存在的三个必要条件: ① 需要存在继承或实现关系 ② 同样的方法调用而执行不同的操作.运行不同代码(重写 ...

最新文章

  1. 如何使用Visual Studio Code调试PHP CLI应用和Web应用
  2. 知乎万赞:人并不是活一辈子,而是活几个瞬间
  3. java中图片文件的传输及显示(Socket以及ServerSocket演示)
  4. 终端母体服务器是心识,自我意识的觉醒与重返母体的归属.doc
  5. 【译】渐进式 Web App 的离线存储
  6. Linux下一块网卡设置多个IP地址
  7. Direct3D学习笔记
  8. discuz内置代码
  9. 数据挖掘的9大成熟技术和应用
  10. 跨考计算机 专硕还是学硕,考研我该如何抉择!专硕学硕不纠结
  11. 使用VMware启动centos6.6并使用Qume+kvm虚拟化linux和windows虚机
  12. leetcode33. 搜索旋转排序数组
  13. 双极性归零码 matlab,双极性不归零码的Matlab实现
  14. win快捷键_终于找到了!10个Win+组合快捷键,让你的工作效率提升10倍
  15. 100 道 Linux 常见面试题,建议收藏!
  16. 《周志明的软件架构课》学习笔记 Day15
  17. 怎么编辑gif动态图片?gif动图编辑的操作步骤
  18. 2015链家网面试记录
  19. 《面朝大海,春暖花开》(海子)
  20. 生死狙击无法显示服务器,生死狙击页面无法显示

热门文章

  1. [html] html和html5有什么区别呢?
  2. [css] 用css3实现伪3D的文字效果
  3. [js] AudioContext有什么应用场景?
  4. 前端学习(2175):认识路由文件的懒加载
  5. 前端学习(1407):多人管理27代码优化
  6. 第六十八期:做中台找死,不做中台等死?
  7. 关于用display:table让元素居中的小结
  8. 条件变量 ---C++17 多线程
  9. mysql-5.7.13-winx64如何安装_mysql 5.7.13 winx64安装配置方法图文教程
  10. 奥特曼传奇英雄存档丢了怎么找回_热血传奇:道士最帅武器—玄天