1.异常机制

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

2.异常的分类

异常的继承结构:基类为Throwable,Error和Exception继承Throwable,RuntimeException和IOException等继承Exception,具体的RuntimeException继承RuntimeException。如图:

Error和RuntimeException及其子类成为未检查异常(unchecked),其它异常成为已检查异常(checked)。

Error体系 Error类体系描述了Java运行系统中的内部错误以及资源耗尽的情形。应用程序不应该抛出这种类型的对象(一般是由虚拟机抛出)。如果出现这种错误,除了尽力使程序安全退出外,在其他方面是无能为力的。所以,在进行程序设计时,应该更关注Exception体系。

Exception体系 Exception体系包括RuntimeException体系和其他非RuntimeException的体系:

Java中凡是继承自Exception但不是继承自RuntimeException的类都是非运行时异常。对于非运行时异常(checked exception),必须要对其进行处理,处理方法有两种:第一种是使用try…catch…finally进行捕获;第二种是在调用该会产生异常的方法所在的方法声明throws Exception。

RuntimeException类直接继承自Exception类,称为运行时异常。Java中所有的运行时异常都直接或间接的继承自RuntimeException.对于运行时异常(runtime exception),我们可以不对其进行处理,也可以对其进行处理。推荐不对其进行处理。

3.捕获异常

try {

FileInputStream fs = new FileInputStream("D:/a.txt");

} catch (FileNotFoundException e) {

System.out.println("catch...");

e.printStackTrace();

} finally{

System.out.println("finally...");

}

4、抛出和捕获异常

4.1 把异常交给JVM处理:

public class ExceptionTest {

public static void execute() throws Exception {

System.out.println("execute...");

throw new Exception();

}

public static void main(String[] args) throws Exception {

execute();

}

}

4.2 使用try catch 语句捕获异常:

public class ExceptionTest {

public static void execute() throws Exception {

System.out.println("execute...");

throw new Exception();

}

public static void main(String[] args) {

try {

execute();

} catch (Exception e) {

e.printStackTrace();

}finally{

}

}

}

5.自定义异常

自定义异常通常是定义一个继承自Exception类的子类。一般情况下我们都会直接继承自Exception类,而不会继承某个运行时的异常类。

5.1 创建自定义异常:

public class MyException extends Exception{

public MyException(){

super();

}

public MyException(String msg){

super(msg);

}

}

5.2 在类中使用异常:

public class ExceptionTest {

public static void execute(int num) throws MyException {

System.out.println("execute...");

if(num==0){

throw new MyException("参数不能为 0");

}

}

}

5.3 捕获自定义异常:

public static void main(String[] args) {

try {

execute(0);

} catch (Exception e) {

e.printStackTrace();

}finally{

}

}

6 异常使用注意事项

当使用多个catch语句块来捕获异常时,需要将父类的catch语句块放到子类型的catch块之后,这样才能保证后续的catch可能被执行,否则子类型的catch将永远无法到达,Java编译器会报编译错误。

如果try语句块中存在return语句,那么首先会执行finally语句块中的代码,然后才返回。

如果try语句块中存在System.exit(0)语句,那么就不会执行finally语句块的代码了,因为System.exit(0)会终止当前运行的JVM。程序在JVM终止前结束执行。

除非注明,饮水思源博客文章均为原创,转载请以链接形式标明本文地址

java 异常分类与处理要机制_Java异常分类,异常处理及异常处理机制相关推荐

  1. java异常类型和基本处理原则_Java异常控制机制和异常处理原则

    Java异常控制机制又被称为"违例控制机制". 捕获程序错误最理想的时机是在编译阶段,这样可以彻底避免错误的代码运行.但并非所有的错误都能在编译期间侦测到,有些问题必须在运行期间解 ...

  2. 简述java的异常机制_JAVA异常机制简述

    1.类的继承结构 在JAVA所有的异常对象都是Throwable类的一个子类的实例 Exception包含两个分支,由于程序错误导致的异常属于RuntimeException,比如数组下标越界,空指针 ...

  3. java中int和integer的区别_Java异常中throw和throws关键字的区别

    Java中常常弄混的两个关键字,throw和throws,它们有什么区别呢?如何记忆他们,而不至于出错呢? throw和throws 区别 throws:出现在方法的签名中,声明当前方法可能抛出的所有 ...

  4. java执行exe 没捕获到输出_Java程序员注意——六种异常处理的陋习

    你觉得自己是一个Java专家吗?是否肯定自己已经全面掌握了Java的异常处理机制?在下面这段代码中,你能够迅速找出异常处理的六个问题吗? OutputStreamWriter out = ... ja ...

  5. java cas机制_java并发编程中的CAS机制,你理解嘛?

    学习Java并发编程,CAS机制都是一个不得不掌握的知识点.这篇文章主要是从出现的原因再到原理进行一个解析.希望对你有所帮助. 一.为什么需要CAS机制? 为什么需要CAS机制呢?我们先从一个错误现象 ...

  6. java map扩容机制_Java HashMap的原理、扩容机制、以及性能思考

    Java HashMap 说明 此文档所介绍的HashMap是基于JDK1.8之后的.此文受到网上很多其他Java生态爱好者文章的影响,写此文的目的是系统的概括下HashMap,并把一些优秀文章的脉络 ...

  7. try catch对异常进行输出到日志、_java安全编码指南之:异常处理

    点击上方的蓝字关注我吧 程序那些事 简介 异常是java程序员无法避免的一个话题,我们会有JVM自己的异常也有应用程序的异常,对于不同的异常,我们的处理原则是不是一样的呢? 一起来看看吧. 异常简介 ...

  8. JAVA标准异常分两大类_java异常分类

    Java中异常的分类 所有异常,都继承自java.lang.Throwable类. Throwable有两个直接子类,Error类和Exception类. Exception Exception则可使 ...

  9. java异常标记_java异常机制

    ------------------------------------------------------------------下面是一些java异常集---------------------- ...

最新文章

  1. linux怎么安装vim?
  2. love2d教程30--文件系统
  3. eclipse项目build时,提示错误.
  4. 几个查询优化小技巧,可以大大提高效率并解决一些问题
  5. Linux正则表达式
  6. CAS (5) —— Nginx代理模式下浏览器访问CAS服务器配置详解
  7. Centos 7硬盘扩容
  8. 搭建分布式FastDFS集群
  9. 简明理解 行列式和秩
  10. keras之权重初始化
  11. GPS授时器(GPS卫星授时器)常用的同步方式
  12. 一文读懂,CPU、精简指令集、复杂指令集该如何理解?
  13. 信息安全实验【CA的安装与使用实验】(独立根)
  14. xss靶场挑战之旅总结
  15. 人工智能入门需要学什么?
  16. 科研小技巧——制作学术会议报告视频的完整流程
  17. 代码太多不要怕,分享一个阅读代码的神器
  18. 山东自然人电子税务局(扣缴端)_好消息!自然人电子税务局人员信息删除操作指南发布,速领!...
  19. C++ 程序设计作业 航空票务管理系统
  20. 教程直播第8期|一文详解 OceanBase 社区版生态工具 ODP OCP

热门文章

  1. 企鹅电竞weex实践——UI开发篇
  2. 分布式发电与智能微电网虚拟仿真实验
  3. Three.js拉伸扫描成型ExtrudeGeometry
  4. linux学习零基础教学课程:Linux文件系统结构
  5. element-ui中table表格页面汇总固定在第一行
  6. python继承注意问题
  7. ATmega88的简单引脚设置
  8. sqlserver2005 使用
  9. xhr如何发送post请求_xhr 或 jQuery ajax, Post 请求如何获得 303 状态的返回结果
  10. 利用外部邮箱发送邮件的方法