`

Java编程那些事儿81——异常处理概述

阅读更多

Java编程那些事儿81——异常处理概述

陈跃峰

出自:http://blog.csdn.net/mailbomb

第十章 异常处理

在实际的项目中,程序执行时经常会出现一些意外的情况,这些意外的情况会导致程序出错或者崩溃,从而影响程序的正常执行,如果不能很好的处理这些意外情况,将使项目的稳定性不强。

对于这些程序执行时出现的意外情况,在Java语言中被称作异常(Exception),出现异常时相关的处理则称之为异常处理。

异常处理是Java语言中的一种机制,恰当使用异常处理可以使整个项目更加稳定,也使项目中正常的逻辑代码和错误处理的代码实现分离,便于代码的阅读和维护。

本章就将深入介绍Java语言中的异常处理机制。

10.1 概述

在实际的项目中,并不是所有的情况都是那样理想,例如不可能有使用不尽的内存,也不可能有熟练的软件使用人员等,这样就会导致项目在执行时会出现各种各样不可预料的情况,这样的情况如果处理不好,则会导致程序崩溃或者中止执行,例如Windows操作系统的蓝屏。

在一个完善的项目,这些不可预料的情况必须得到正确的处理,才能使整个项目具有比较强的稳定性,这才是符合要求的项目。为了实现这种处理结构,在Java语言中新增了一套完善的语法,通过处理这些情况来增强项目的稳定性,这套语法就是异常处理的语法。

这些程序执行时出现的不可预料的情况,也就是执行时的意外情况,在Java语言的语法中被称作异常。

其实简单的进行异常处理很多程序设计语言都是可以实现的,就是根据情况判断,不同的情况作出不同的处理。Java语言的异常处理机制最大的优势之一就是可以将异常情况在方法调用中进行传递,通过传递可以将异常情况传递到合适的位置再进行处理。这种机制就类似于现实中你发现了火灾,你一个人是无法扑灭大火的,那么你就将这种异常情况传递给119,然后119再将这个情况传递给附近的消防队,消防队及时赶到进行灭火。使用这种处理机制,使得Java语言的异常处理更加灵活。

另外,使用异常处理机制,可以在源代码级别将正常执行的逻辑代码,和进行异常情况处理的代码相分离,更加便于代码的阅读。

异常处理机制是Java语法的一个特色功能,通过恰当的使用该机制,可以使得Java语言编写的项目更加稳定。

当然,异常处理机制也存在一些弊端,例如使用异常处理将降低程序的执行效率,增加语法的复杂度等。

下面简单的看一个执行时将出现异常的代码:

/**

* 异常出现示例

*/

public class ExceptionDemo {

public static void main(String[] args) {

String s = null;

int len = s.length();

}

}

在运行该程序时,在控制台的输出结果如下:

Exception in thread "main" java.lang.NullPointerException

at ExceptionDemo.main(ExceptionDemo.java:7)

从这个程序执行时的输出可以看出,提示在main线程(thread)中出现了异常,异常的类型为java.lang.NullPointerException,异常出现在ExceptionDemomain方法中,出现异常的代码在ExceptionDemo.java代码中的第7行。在JDK文档查阅java.lang包,在异常部分可以查阅到关于NullPointerException的详细说明。这里出现该异常是因为对象s没有创建造成的。将程序中的String s = null;代码替换为String s = “abc”;即可避免出现该异常。

在程序执行中,会出现各种各样的异常情况,这些异常情况在Java体系将代表常见的异常情况,这就是下面的异常类体系中需要介绍的知识。

10.2 异常类体系

Java语言以前,代表各种异常情况一般使用数字,例如常见的浏览器中的404错误,以及Windows中的错误编号等,使用这些数字可以代表各种异常情况,但是最大的不足在于这些数字不够直观,无法很直接的从这些数字中知道异常出现的原因。

所以在Java语言中代表异常时,不再使用数字来代表各种异常的情况,而是使用一个专门的类来代表一种特定的异常情况,在系统中传递的异常情况就是该类的对象,所有代表异常的类组成的体系就是Java语言中的异常类体系。

为了方便对于这些可传递对象的管理,Java API中专门设计了java.lang.Throwable类,只有该类子类的对象才可以在系统的异常传递体系中进行。该类的两个子类分别是:

1Error

该类代表错误,指程序无法恢复的异常情况。对于所有错误类型以及其子类,都不要求程序进行处理。常见的Error类例如内存溢出StackOverflowError等。

2Exception

该类代表异常,指程序有可能恢复的异常情况。该类就是整个Java语言异常类体系中的父类。使用该类,可以代表所有异常的情况。

Java API中,声明了几百个Exception的子类分别来代表各种各样的常见异常情况,这些类根据需要代表的情况位于不同的包中,这些类的类名均以Exception作为类名的后缀。如果遇到的异常情况,Java API中没有对应的异常类进行代表,也可以声明新的异常类来代表特定的情况。

在这些异常类中,根据是否是程序自身导致的异常,将所有的异常类分为两种:

1RuntimeException及其所有子类

该类异常属于程序运行时异常,也就是由于程序自身的问题导致产生的异常,例如数组下标越界异常ArrayIndexOutOfBoundsException等。

该类异常在语法上不强制程序员必须处理,即使不处理这样的异常也不会出现语法错误。

2、其它Exception子类

该类异常属于程序外部的问题引起的异常,也就是由于程序运行时某些外部问题导致产生的异常,例如文件不存在异常FileNotFoundException等。

该类异常在语法上强制程序员必须进行处理,如果不进行处理则会出现语法错误。

熟悉异常类的分类,将有助于后续语法中的处理,也使得在使用异常类时可以选择恰当的异常类类型。

由于异常类的数量非常多,在实际使用时需要经常查阅异常类的文档,下面列举一些常见的异常类,如下表所示:

常见异常类

异常类类名

功能说明

java.lang.NullPointerException

空指针异常,调用null对象中的非static成员变量或成员方法时产生该异常

java.lang.ArrayIndexOutofBoundsException

数组下标越界异常,数组下标数值小于0或大于等于数组长度时产生该异常

java.lang.IllegalArgumentException

非法参数异常,当参数不合法时产生该异常

下面来介绍一下异常处理的相关语法。

分享到:
评论

相关推荐

    java学习笔记——异常

    Java学习笔记——异常 在Java编程中,异常处理是一项至关重要的技能,它允许开发者优雅地处理程序运行时可能遇到的问题,防止程序意外终止,并提供有用的反馈信息。异常是程序执行过程中遇到的不正常情况,例如除以...

    java课程设计大作业-GUI编程,基于Java实现的俄罗斯方块小游戏

    java课程设计大作业——GUI编程,基于Java实现的俄罗斯方块小游戏java课程设计大作业——GUI编程,基于Java实现的俄罗斯方块小游戏java课程设计大作业——GUI编程,基于Java实现的俄罗斯方块小游戏java课程设计大...

    Java编程经典——2010新版Java教程

    Java编程经典——2010新版Java教程 内容详尽。。 适合大家学习

    JAVA学习笔记————————

    3. **异常处理**:JAVA提供了一种结构化的异常处理机制,学习笔记会解释何时及如何使用try-catch-finally语句块,以及不同类型的异常类。 4. **内存管理与垃圾回收**:JAVA的自动内存管理是通过垃圾回收机制实现的...

    Java全能学习面试手册——互联网企业面试真题.zip

    Java全能学习面试手册——互联网企业面试真题.zip 01 java面试——北京-百度-Java中级.pdf 02 java面试——北京-京东-Java中级.pdf 03 java面试——广州-唯品会-Java大数据开发工程师.pdf 04 java面试——杭州-阿里...

    JAVA编程题全集(100题及答案)——直接打印

    8. JAVA 异常处理:资源中没有提到 JAVA 异常处理的知识点,但是在实际开发中,异常处理是非常重要的,所以开发者需要学习和掌握 JAVA 异常处理的知识点。 本资源提供了一个完整的 JAVA 编程题全集,涵盖了大量的...

    java程序设计大作业-雷电飞机射击游戏(Java)

    java程序设计大作业——雷电飞机射击游戏(Java)java程序设计大作业——雷电飞机射击游戏(Java)java程序设计大作业——雷电飞机射击游戏(Java)java程序设计大作业——雷电飞机射击游戏(Java)java程序设计大...

    Java 3D 编程实践——网络上的三维动画 电子书

    这本书《Java 3D编程实践——网络上的三维动画》显然会深入探讨如何利用Java 3D来实现网络环境中的动态3D场景。 Java 3D API是基于Java Foundation Classes (JFC) 的一部分,它为开发者提供了构建三维图形应用的...

    JAVA程序与PLC通信——学习使用

    本篇将详细探讨"JAVA程序与PLC通信——学习使用"这一主题,包括如何使用Java实现与西门子PLC的串口通信,以及如何收发数据。 首先,我们要理解Java语言的优势。Java作为一种跨平台的编程语言,其强大的网络支持和...

    2015级java期末项目代码————图书馆管理系统.zip

    【标题】"2015级java期末项目代码——图书馆管理系统.zip" 提供的是一个基于Java编程语言实现的图书馆管理系统的源代码。这个项目可能是针对大学计算机专业2015级学生的期末作业或课程设计,旨在让学生通过实际操作...

    java软件工程师简历模板——应届生.rar

    这份名为"java软件工程师简历模板——应届生.rar"的压缩包文件,旨在为即将踏入职场的Java编程新手提供一份量身定制的简历指南。 在撰写Java软件工程师的简历时,有几个关键点需要注意: 1. **个人信息**:应包含...

    Java自学之路——超仔细含练习项目及源码 Java知识体系最强总结————含各个阶段的面试题

    - **异常处理机制**:Java中的异常处理通过`try-catch-finally`语句块来实现,其中`try`块用于捕获异常,`catch`块用于处理异常,而`finally`块则无论是否发生异常都会被执行。 - **迭代器原理**:迭代器...

    JAVA语言一月通——应用编程及网际通信

    《JAVA语言一月通——应用编程及网际通信》书中的一些源代码 分享下 希望大家喜欢

    java毕业设计——文本编辑器.zip

    java毕业设计——文本编辑器.zip java毕业设计——文本编辑器.zip java毕业设计——文本编辑器.zip java毕业设计——文本编辑器.zip java毕业设计——文本编辑器.zip java毕业设计——文本编辑器.zip java毕业设计...

    Java全能学习面试手册——阿里开发手册全套.zip

    Java全能学习面试手册——阿里开发手册全套.zip 01 阿里巴巴Java开发手册1.0.0(公开版).pdf 02 阿里巴巴Java开发手册1.1.0(正式版).pdf 03 阿里巴巴Java开发手册1.2.0(升级版).pdf 04 阿里巴巴Java开发手册...

    java编程——学员管理系统

    1. Java基础:包括语法、面向对象编程、异常处理等。 2. GUI编程:使用Swing或JavaFX创建用户界面。 3. 数据库管理:理解SQL语言,能进行基本的数据库设计和操作。 4. 网络编程:了解Socket或RMI原理,实现客户端和...

    JAVA_J2EE大作业——学生信息管理系统.doc

    在本系统中,使用了 try-catch 语句来处理异常,例如 IOException 和 DocumentException。这能够确保系统的稳定运行,并能够捕捉异常,避免系统崩溃。 知识点 7:Java 中的多线程编程 在本系统中,使用了多线程...

    Java谜题Java谜题1——表达式谜题

    Java谜题1——表达式谜题 谜题1:奇数性 谜题2:找零时刻 谜题3:长整除 谜题4:初级问题 谜题5:十六进制的趣事 谜题6:多重转型 谜题7:互换内容 谜题8:Dos Equis 谜题9:半斤 谜题10:八两 Java谜题2...

    java课程设计报告书——局域网聊天系统

    在本次Java课程设计中,我们构建了一个基于局域网的聊天系统,旨在让学生深入理解和应用Java网络编程技术,以及提高多线程处理、数据传输和用户交互方面的技能。这个系统允许在同一局域网内的用户通过简单易用的界面...

    java基础——————试题库

    这份“java基础——————试题库”资源旨在帮助学习者系统地复习和深入理解Java的基础知识,确保他们能够全方位地掌握这一强大的编程工具。下面将详细阐述Java的基础知识点。 1. **Java简介** - Java是由Sun ...

Global site tag (gtag.js) - Google Analytics