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

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

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. Linux0.11进程分配时间片的策略

    想知道内核什么时候给进程重新分配时间片,最好的办法就是阅读源代码(其中已经打了注释) /******************************************************** ...

  2. 【一天一道LeetCode】#65. Valid Number

    一天一道LeetCode 本系列文章已全部上传至我的github,地址:ZeeCoder's Github 欢迎大家关注我的新浪微博,我的新浪微博 欢迎转载,转载请注明出处 (一)题目 Validat ...

  3. myeclipse 彻底让烦人的各种验证消失 让你的开发速度飞快

    大家都知道,myeclipse的验证很吭爹,不但保存的时候要难,BUILD的时候也要验.常常为了等它而浪费了大浪的时间!!真不知道设计人员当初是怎么加进这种功能的.真心不需要. 以前都是到window ...

  4. 【一天一道LeetCode】#35. Search Insert Position

    一天一道LeetCode系列 (一)题目 Given a sorted array and a target value, return the index if the target is foun ...

  5. 【一天一道LeetCode】#22. Generate Parentheses

    一天一道LeetCode (一)题目 Given n pairs of parentheses, write a function to generate all combinations of we ...

  6. Linux用户配置文件(第二版)

    /etc/passwd文件剖析 文件格式: root:x:0:0:root:/root:/bin/bash 用户名:密码位:UID:GID[缺省组ID]:注释性的描述信息:宿主目录:shell[7部分 ...

  7. 《java入门第一季》之面向对象(继承总结)

    继承已经全部写完了,接下来通过几个案例对继承问题做一个总结: /* 看程序写结果: A:成员变量 就近原则 B:this和super的问题 this访问本类的成员 super访问父类的成员 C:子类构 ...

  8. Java-ServletOutputStream

    /** * Provides an output stream for sending binary data to the * client. A <code>ServletOutput ...

  9. Linux - gcc 的简易用法 (编译、参数与链结)

    # 仅将原始码编译成为目标档,并不制作连结等功能: [root@www ~]# gcc -c hello.c # 会自动的产生 hello.o 这个文件,但是并不会产生 binary 运行档. # 在 ...

  10. ORACLE ERP各模块会计分录

      ORACLE ERP各模块会计分录   第一章 采购模块 一.资产采购(科目来源:库存组织) 1.物料接收 借  材料采购     接收数量*采购单价 贷 应计暂估     接收数量*采购单价 2 ...