---恢复内容开始---

这是我的一篇要在博客园发布的随笔,主要是简单的概括一下我本次所学的关于异常处理的知识。有讲的不妥当的地方,或者有需要补充的,还请各位高人给指点,共同学习,虚心求学。谢谢啦~

1.首先我们来说一下有关异常的概述。

1.1  举个列子:想要洗手,结果发现水龙头停水;想要骑车回家,结果发现车胎漏气。同样,在软件运行过程中,也会遇到各种意想不到的错误影响程序的正常运行,我们将出现在程序中的这些错误称之为异常。

下面通过一个示例来演示程序中出现异常时的运行结果:

注:示例中的代码在编译时没有任何问题,但是在运行“int b = a/0”这一行时,由于除数为0,所以抛出异常“ by zero” , 导致后面的语句也无法执行。异常一旦出现就会影响程序的运行,为了保证程序的正常运行,我们需要在程序中加入异常处理的代码。

2.接着我们说一下关于异常的分类.

1.2  JAVA语言在设计时是按照类的层次结构来构建异常体系的,Throwable是所有异常类的祖先,该类有两个直接子类:Error类和Exception类。

Error:误差,错误,过失.

Exception:例外,异议.

其中Error指的是程序中无法处理的错误。  而Exception指的是程序本身可以处理的异常。

JAVA异常体系结构图如图:

本人亲手绘图。啦啦啦啦,OK,继续正题。

下面学习的异常处理的操作主要是针对Exception类及其子类的处理,异常处理的要求是能预见执行过程可能发生的异常,并且把异常处理的功能包含在程序中。

3.JAVA异常处理机制.

3.1 使用try-catch-finally捕获异常

捕获异常的操作需要通过try,catch,finally关键字来完成,编写代码时需要将可能抛出异常的语句放在try代码块中,将针对异常处理的代码放到catch代码块中。当try代码块中的内容发生异常时虚拟机会将异常信息封装成一个对象传递到catch代码块中进行处理,而finally代码块中的语句无论是否发生异常都会执行。

try-catch-finally代码块的语法如下图:

注:try-catch-finally代码块中的finally部分并不是异常处理时必须要加上的部分,try-catch部分可以单独使用。(昂...图内也有标注呦)

注2:如果try中的代码没有发生异常,则不会执行catch中的代码,但是会执行finally中的代码。(上述提到过:而finally代码块中的语句无论是否发生异常都会执行。)

如果try中的代码发生异常,则会执行catch中的代码,catch中的代码块执行完后会继续执行finally中的代码块。

提醒:

(1)可能发生异常的代码必须放入try代码块中程序才能正常捕获到异常。

(2)try语句不能独立存在,其后至少要有一个catch代码块。

(3)finally代码块不是必须存在的结构,可以根据实际需求决定是否添加。

3.2运行时异常

常见的运行时异常:如下图

注:运行时异常就是编译时可以通过,但是运行时可能发生的异常,对于常见的运行时异常我们应该重点掌握。

3.3使用throws关键字抛出异常

使用throws抛出异常的思路:如果当前方法不知道如何处理该异常,该异常由上一级调用者处理;如果main()方法也不知道如何处理该异常,会把异常交给JVM处理。JVM处理异常饿方法:打印异常信息,并终止程序运行。

使用throws抛出异常的语法结构如下:

3.4 使用throw抛出异常

一般情况下,程序中如果出现了异常就会自动抛出,同时JAVA也支持主动抛出异常。主动抛出异常可以通过throw语句来实现。

throw抛出异常代码语法结构如下:

3.5 自定义异常

JAVA中的API提供的内置异常不一定总能显示程序中发生的错误,为了弥补这种缺陷我们可以自己定义异常来显示程序中所发生的错误,那么来如何创建和使用自定义异常呢?

自问自答中:创建自定义异常需要创建类来继承Exception类或其子类,下面通过一个示例来演示如何将一个普通类变成异常类。

示例:

从示例中可以看出。创建自定义异常可以通过继承Exception类来实现,自定义异常同样也可以在程序中使用throw关键字抛出。

下面通过一个示例来演示抛出自定义异常类MyException。

示例:

本次小结:

a.  Throwable类是所有异常类的祖先,Throwable类有两个直接子类Error类和Exception类。

b.  Exception是指程序在正常执行时所发生的可以捕获异常处理的异常。

c.  Error指的是程序运行时不能捕获且无法解决的错误。

d.  Java的异常处理机制有两种:一种是使用try-catch-finally语句捕获处理异常;另一种实在方法声明部分使用throws关键字抛出异常。

e.  Java中的异常分为两大类检查时异常和运行时异常。检查时异常都属于Exception类的直接子类或间接子类(RuntimeException类和其他子类外),运行时异常都属于RuntimeException类的直接子类或间接子类。

f.  创建自定义异常需要继承Exception类或其子类。

好了,今日就到这里了,参观到此结束。

---恢复内容结束---

关于JAVA中异常处理的简单阐释.的更多相关文章

  1. 多线程(三) java中线程的简单使用

    java中,启动线程通常是通过Thread或其子类通过调用start()方法启动. 常见使用线程有两种:实现Runnable接口和继承Thread.而继承Thread亦或使用TimerTask其底层依 ...

  2. java中异常处理机制的简单原理

    以上是自认为的java异常处理的简单原理,如有不妥之处还请各位大神帮忙指点,谢谢!

  3. Java中异常处理和设计

    在程序设计中,进行异常处理是非常关键和重要的一部分.一个程序的异常处理框架的好坏直接影响到整个项目的代码质量以及后期维护成本和难度.试想一下,如果一个项目从头到尾没有考虑过异常处理,当程序出错从哪里寻 ...

  4. java中数据流的简单介绍

    java中的I/O操作主要是基于数据流进行操作的,数据流表示了字符或者字节的流动序列. java.io是数据流操作的主要软件包 java.nio是对块传输进行的支持 数据流基本概念 “流是磁盘或其它外 ...

  5. java中volatile的简单理解

    原创作品,可以转载,但是请标注出处地址:http://www.cnblogs.com/V1haoge/p/7833881.html 据说,volatile是java语言中最轻量级的并发控制方式. vo ...

  6. Java中异常处理之try和catch代码块的使用

    转自:https://www.jb51.net/article/72901.htm Java try和catch的使用 尽管由Java运行时系统提供的默认异常处理程序对于调试是很有用的,但通常你希望自 ...

  7. redis学习笔记(二)——java中jedis的简单使用

    redis怎么在java中使用,那就是要用到jedis了,jedis是redis的java版本的客户端实现,原本原本想上来就直接学spring整合redis的,但是一口吃个胖子,还是脚踏实地,从基础开 ...

  8. Java 中的instanceof简单讲解

    Java 中的instanceof 运算符是用来在运行时指出对象是否是特定类的一个实例.instanceof通过返回一个布尔值来指出,这个对象是否是这个特定类或者是它的子类的一个实例. 用法:resu ...

  9. JAVA中JNI的简单使用

    了解JNI:JAVA因其跨平台特性而受人们喜爱,也正因此,使得它和本机各种内部联系变得很少,所以JNI(Java Native Interface)就是用来解决JAVA本地操作的一种方式.JAVA通过 ...

随机推荐

  1. 小强的HTML5移动开发之路(20)——HTML5 Web SQL Database

    来自:http://blog.csdn.net/dawanganban/article/details/18220761 一.Web Database介绍 WebSQL数据库API实际上不是HTML5 ...

  2. 怎样将Android手机弄死机?

    将Android手机弄死机目前知道有两种方式: 第一种: 以root权限在shell中执行 stop 通过 start 但是这种串口还是可以用 第二种: suecho "c" &g ...

  3. Andriod 安全之Windows下CTS自动化测试环境的搭建

    原文出处:http://blog.csdn.net/sk719887916/article/details/48050997 安卓应用离不开性能测试,也离不开安全测试,CTS是常用的安全测试工具,开发 ...

  4. mysql 备份和恢复的两条命令

    压缩备份: 1.mysqldump -h localhost -u root -p dbname | gzip > dbname.sql.gz 压缩恢复: 1.gunzip < dbnam ...

  5. 省市联动 纯html+js

    在js里面声明所有数据,并根据html的select事件触发js实现填充对应的数据到下拉框. 代码 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 ...

  6. 中国象棋游戏Chess(3) - 实现走棋规则

    棋盘的绘制和走棋参看博文:中国象棋游戏Chess(1) - 棋盘绘制以及棋子的绘制,中国象棋游戏Chess(2) - 走棋 现在重新整理之前写的代码,并且对于每个棋子的走棋规则都进行了限制,不像之前那 ...

  7. DB 查询分析器 6.03 ,遨游于任何Windows操作系统之上的最优秀的数据库客户端工具

    DB 查询分析器 6.03 ,遨游于任何Windows操作系统之上的最优秀的数据库客户端工具 中国本土程序员马根峰(CSDN专访马根峰:海量数据处理与分析大师的中国本土程序员  .03版本已经完全兼容 ...

  8. Linux查询已开启文件或已运行进程开启之文件fuser,lsof,pidof

    fuser:藉由文件(或文件系统)找出正在使用该文件的程序 [root@www ~]# fuser [-umv] [-k [i] [-signal]] file/dir 选项与参数: -u :除了进程 ...

  9. C/C++创建多级目录

    常常需要在非MFC的环境下创建目录,尤其是多级目录,这里写了一个创建多级目录的子函数CreateDir,以后需要就可以直接拿来用了. #include <string> #include ...

  10. redis简单主从复制

    两台ubuntu 云服务器,分别redis主从服务器,ip地址是:123.207.96.138(主)139.199.167.251(从) 安装redis,在这里我建议给redis设置密码,之前看过一篇 ...