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

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

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. 自建log4cxx.sln

    log4cxx的下载包是0.10版本的,代码较旧,有些错误,应该从主干下载最新的代码. 0.10的下载包中有projects目录,内有VC6的工程文件; 还有site目录,内有vc构建的帮助文档vst ...

  2. How to create DB2 user function easily by DB Query Analyzer 6.03

    How to create DB2user function easily by DB Query Analyzer 6.03 Ma Genfeng (Guangdong Unitoll Servic ...

  3. windows与linux下的\r\n

    \n   为ASCII的0x0a   换行        \r   为ASCII的0x0d   回车         在windows   系统中,当你输入回车时会自动变成\r\n        在l ...

  4. Android 自定义View -- 简约的折线图

    转载请注明出处:http://write.blog.csdn.net/postedit/50434634 接上篇 Android 圆形百分比(进度条) 自定义view 昨天分手了,不开心,来练练自定义 ...

  5. (三十三)Xcode项目的重要工程文件

    1.Supporting files内有一个Xxx-Info.plist文件(旧版本Xcode的配置文件叫Info.plist).因此自定义的plist不要带Info关键词. 这个plist是系统的全 ...

  6. Java常见运算符整理

    本文是在学习中的总结,欢迎转载但请注明出处:http://blog.csdn.net/pistolove/article/details/44724267 本文主要介绍Java中常见的运算符,重点介绍 ...

  7. 图像边缘检测--OpenCV之cvCanny函数

    图像边缘检测--OpenCV之cvCanny函数 分类: C/C++ void cvCanny( const CvArr* image, CvArr* edges, double threshold1 ...

  8. android JNI调用机制

    JNI的出现使得开发者既可以利用Java语言跨平台.类库丰 富.开发便捷等特点,又可以利用Native语言的高效. JNI是JVM实现中的一部分,因此Native语言和Java代码都运行在JVM的宿主 ...

  9. myBatis源码之XMLConfigBuilder

    XMLConfigBuilder是对mybatis的配置文件进行解析的类,会对myabtis解析后的信息存放在Configuration对象中,Configuration对象会贯穿整个mybatis的 ...

  10. C++语言之静态变量的运用

    #include <iostream> using namespace std ; class Banana { public: static int id ; Banana(void) ...