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

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

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. Socket编程实践(2) --Socket编程导引

    什么是Socket? Socket可以看成是用户进程与内核网络协议栈的接口(编程接口, 如下图所示), 其不仅可以用于本机进程间通信,可以用于网络上不同主机的进程间通信, 甚至还可以用于异构系统之间的 ...

  2. Java Swing 之Timer配合JProgressBar的使用

    Timer作为java开发中常用的一个定时工具,配合JProgressBar使用起来还真是方便,只需要调用timer.start()方法就能激活并运行,然后调用stop()方法便能停止,还可以再次通过 ...

  3. (五十九)iOS网络基础之UIWebView简易浏览器实现

    [UIWebView网络浏览器] 通过webView的loadRequest方法可以发送请求显示相应的网站,例如: NSURL *url = [NSURL URLWithString:@"h ...

  4. shell的date命令:使用方法,以及小时、分钟的计算

    shell命令格式严格,不像python那样命令行中可以添加空格.如等号两边无空格.有多余空格错误,日期date命令就是最明显的例子. 命令格式: date [-u] [-d datestr] [-s ...

  5. 《java入门第一季》之面向对象(修饰符的概念和总结)

    还是由于eclipde等ide的强大功能,会自动提示你修饰符是否可行.所以对修饰符的作用了解即可: 修饰符:         权限修饰符:private,默认的,protected,public    ...

  6. python-inotify 在linux上安装

    python-inotify 在linux上安装 0 下载 $ wget --no-check-certificate https://pypi.python.org/packages/source/ ...

  7. Win8 HTML5与JS编程学习笔记(二)

    近期一直受到win8应用的Grid布局困扰,经过了半下午加半个晚上的奋斗,终于是弄明白了Grid布局方法的规则.之前我是阅读的微软官方的开发教程,书中没有详细说明CSS3的布局规则,自己鼓捣了半天也是 ...

  8. Android Studio Gradle 多渠道自动打包,动态修改HostUrl,签名apk,混淆配置详解

    文/ skay csdn博客:http://blog.csdn.net/sk719887916/article/details/40541163 最近遇到项目从Eclispe迁移到Android st ...

  9. JDBC详解(汇总)

    from:http://www.cnblogs.com/lee/archive/2007/08/25/869656.html:http://blog.csdn.net/lovesomnus/artic ...

  10. Android绘图机制(四)——使用HelloCharts开源框架搭建一系列炫酷图表,柱形图,折线图,饼状图和动画特效,抽丝剥茧带你认识图表之美

    Android绘图机制(四)--使用HelloCharts开源框架搭建一系列炫酷图表,柱形图,折线图,饼状图和动画特效,抽丝剥茧带你认识图表之美 这里为什么不继续把自定义View写下去呢,因为最近项目 ...