- 浏览: 319328 次
- 性别:
- 来自: 广州
-
文章分类
最新评论
-
opalescent_:
学习了。。
java笔试题的整理和解答扩展(String专题) -
yixiao258964:
谢谢,找了好久Reverse Enginee,都说在datab ...
PowerDesigner Reverse Engineer from database-mysql -
javaAlpha:
介绍的真全啊
Java编程那些事儿86——文件操作之File类使用
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,异常出现在ExceptionDemo的main方法中,出现异常的代码在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类,只有该类子类的对象才可以在系统的异常传递体系中进行。该类的两个子类分别是:
1、Error类
该类代表错误,指程序无法恢复的异常情况。对于所有错误类型以及其子类,都不要求程序进行处理。常见的Error类例如内存溢出StackOverflowError等。
2、Exception类
该类代表异常,指程序有可能恢复的异常情况。该类就是整个Java语言异常类体系中的父类。使用该类,可以代表所有异常的情况。
在Java API中,声明了几百个Exception的子类分别来代表各种各样的常见异常情况,这些类根据需要代表的情况位于不同的包中,这些类的类名均以Exception作为类名的后缀。如果遇到的异常情况,Java API中没有对应的异常类进行代表,也可以声明新的异常类来代表特定的情况。
在这些异常类中,根据是否是程序自身导致的异常,将所有的异常类分为两种:
1、RuntimeException及其所有子类
该类异常属于程序运行时异常,也就是由于程序自身的问题导致产生的异常,例如数组下标越界异常ArrayIndexOutOfBoundsException等。
该类异常在语法上不强制程序员必须处理,即使不处理这样的异常也不会出现语法错误。
2、其它Exception子类
该类异常属于程序外部的问题引起的异常,也就是由于程序运行时某些外部问题导致产生的异常,例如文件不存在异常FileNotFoundException等。
该类异常在语法上强制程序员必须进行处理,如果不进行处理则会出现语法错误。
熟悉异常类的分类,将有助于后续语法中的处理,也使得在使用异常类时可以选择恰当的异常类类型。
由于异常类的数量非常多,在实际使用时需要经常查阅异常类的文档,下面列举一些常见的异常类,如下表所示:
常见异常类
异常类类名 |
功能说明 |
java.lang.NullPointerException |
空指针异常,调用null对象中的非static成员变量或成员方法时产生该异常 |
java.lang.ArrayIndexOutofBoundsException |
数组下标越界异常,数组下标数值小于0或大于等于数组长度时产生该异常 |
java.lang.IllegalArgumentException |
非法参数异常,当参数不合法时产生该异常 |
下面来介绍一下异常处理的相关语法。
发表评论
-
Java编程那些事儿37—for语句语法
2008-06-17 11:53 752Java编程那些事儿37—for语句语法 郑州游戏学院 陈跃 ... -
Java编程那些事儿38—break和continue语句
2008-06-18 15:01 789Java编程那些事儿38—break和continue语句 ... -
Java编程那些事儿39—流程控制综合示例1
2008-06-19 12:30 803Java编程那些事儿39—流程控制综合示例1 郑州游戏学院陈 ... -
Java编程那些事儿40—流程控制综合示例2
2008-06-19 20:23 902Java编程那些事儿40—流程控制综合示例2 郑州游戏学院陈 ... -
Java编程那些事儿41—流程控制综合示例3
2008-06-20 18:06 709<meta http-equiv="Conte ... -
Java编程那些事儿42—流程控制综合练习
2008-06-20 22:13 817Java编程那些事儿42—流程控制综合练习 郑州游戏学院 陈 ... -
Java编程那些事儿57—面向对象基础
2008-07-28 14:15 784Java编程那些事儿57—面向对象基础 郑州游戏学院 陈跃峰 ... -
Java编程那些事儿58—类(一)
2008-07-29 11:05 726Java编程那些事儿58—类(一) 郑州游戏学院 陈跃峰 ... -
Java编程那些事儿59——类(二)
2008-08-04 23:36 711Java编程那些事儿59——类(二) 郑州游戏学院 陈跃峰 ... -
Java编程那些事儿60——对象
2008-08-18 23:49 643Java编程那些事儿60—— ... -
Java编程那些事儿61—面向对象设计方法和面向对象特性(一)
2008-08-29 21:42 767Java编程那些事儿61—面向对象设计方法 郑州游戏学院 陈 ... -
Java编程那些事儿62——继承(二)
2008-09-08 12:11 831Java编程那些事儿62——继承(二) 郑州游戏学院 ... -
Java编程那些事儿63—多态性
2008-09-27 10:31 760Java编程那些事儿63—多态性 郑州游戏学院 陈跃峰 出 ... -
Java编程那些事儿64——访问控制符、修饰符和其它关键字
2008-10-14 14:12 809<meta http-equiv="Conte ... -
Java编程那些事儿65——static修饰符
2008-10-23 15:46 836Java编程那些事儿65——static修饰符 郑州游戏学院 ... -
Java编程那些事儿66——final修饰符
2008-11-11 17:19 743Java编程那些事儿66——f ... -
Java编程那些事儿67——this和super
2008-11-12 12:25 977Java编程那些事儿67——this和super 陈跃峰 ... -
Java编程那些事儿68——抽象类和接口(一)
2008-12-22 11:31 765Java编程那些事儿68—— ... -
Java编程那些事儿69——抽象类和接口(二)
2008-12-27 16:25 990Java编程那些事儿69——抽象类和接口(二) 陈跃峰 ... -
Java编程那些事儿70——抽象类和接口(三)
2009-01-05 14:20 1200Java编程那些事儿70—— ...
相关推荐
做坦克游戏,学Java编程(三)——实现GoodTank类.pdf
做坦克游戏,学Java编程(四)——添加炮弹类.pdf
Java学习笔记——异常 在Java编程中,异常处理是一项至关重要的技能,它允许开发者优雅地处理程序运行时可能遇到的问题,防止程序意外终止,并提供有用的反馈信息。异常是程序执行过程中遇到的不正常情况,例如除以...
java课程设计大作业——GUI编程,基于Java实现的俄罗斯方块小游戏java课程设计大作业——GUI编程,基于Java实现的俄罗斯方块小游戏java课程设计大作业——GUI编程,基于Java实现的俄罗斯方块小游戏java课程设计大...
Java编程经典——2010新版Java教程 内容详尽。。 适合大家学习
Java全能学习面试手册——互联网企业面试真题.zip 01 java面试——北京-百度-Java中级.pdf 02 java面试——北京-京东-Java中级.pdf 03 java面试——广州-唯品会-Java大数据开发工程师.pdf 04 java面试——杭州-阿里...
8. JAVA 异常处理:资源中没有提到 JAVA 异常处理的知识点,但是在实际开发中,异常处理是非常重要的,所以开发者需要学习和掌握 JAVA 异常处理的知识点。 本资源提供了一个完整的 JAVA 编程题全集,涵盖了大量的...
内容概要:本文深入探讨了 Java 编程中的异常处理机制,首先介绍了异常的基本概念、分类及表现形式,随后详细解析了常见异常类如 NullPointerException、ArrayIndexOutOfBoundsException 和 IOException 等的具体...
java毕业设计——java图形图象处理系统的设计与实现(论文+源代码+数据库).zip java毕业设计——java图形图象处理系统的设计与实现(论文+源代码+数据库).zip java毕业设计——java图形图象处理系统的设计与实现(论文+...
轻量级Java EE企业应用实战——Struts 2+Spring+Hibernate整合开发电子书123全套.part3.rar
文中还深入讲解了处理异常的两种方式:使用try-catch块捕获异常和使用throws关键字抛出异常。此外,文章通过具体的Student类和GirlFriend类的实例演示了如何在实际编程中应用异常处理,包括自定义异常类的创建和使用...
java程序设计大作业——雷电飞机射击游戏(Java)java程序设计大作业——雷电飞机射击游戏(Java)java程序设计大作业——雷电飞机射击游戏(Java)java程序设计大作业——雷电飞机射击游戏(Java)java程序设计大...
这本书《Java 3D编程实践——网络上的三维动画》显然会深入探讨如何利用Java 3D来实现网络环境中的动态3D场景。 Java 3D API是基于Java Foundation Classes (JFC) 的一部分,它为开发者提供了构建三维图形应用的...
Java JDK 6学习笔记——PPT简体版是针对初学者和有经验的开发者们的一份宝贵资源,它深入浅出地介绍了Java编程语言的核心概念和技术。这份笔记以PPT的形式呈现,使得学习过程更加直观易懂,适合课堂教学或自我学习。...
【标题】"2015级java期末项目代码——图书馆管理系统.zip" 提供的是一个基于Java编程语言实现的图书馆管理系统的源代码。这个项目可能是针对大学计算机专业2015级学生的期末作业或课程设计,旨在让学生通过实际操作...
接着深入探讨了Java的进阶特性,如面向对象编程(类、对象、封装、继承、多态)、异常处理机制、集合框架(Collection和Map接口及其常用实现类)。通过两个实用案例——学生成绩管理系统和文件处理应用,展示了Java...
这份名为"java软件工程师简历模板——应届生.rar"的压缩包文件,旨在为即将踏入职场的Java编程新手提供一份量身定制的简历指南。 在撰写Java软件工程师的简历时,有几个关键点需要注意: 1. **个人信息**:应包含...
- **异常处理机制**:Java中的异常处理通过`try-catch-finally`语句块来实现,其中`try`块用于捕获异常,`catch`块用于处理异常,而`finally`块则无论是否发生异常都会被执行。 - **迭代器原理**:迭代器...
《JAVA语言一月通——应用编程及网际通信》书中的一些源代码 分享下 希望大家喜欢