`
草帽当家的
  • 浏览: 24403 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
文章分类
社区版块
存档分类
最新评论

关于错误和异常的阶段总结

阅读更多
        当我们查看JDK时,不难发现除了Throwable类中定义了为数不多的方法外,几乎它的所有子类,无论是Error,或者是Exception都很少有方法定义,或方法重写,这间接的说明了一点——方法对于具体的错误或异常类是无关紧要的。我们往往关心的是错误或异常的名字,自己该怎么对自己的程序进行修改,看一下异常名,一目了然!
        下面是一些我的一些实例总结!
        一.Error总结
        导致错误的原因主要是我们自己的逻辑错误,或原则上的错误导致了一些不可调和的结果!
    1.栈溢出错误:在堆中不停的创建自身对象,行为就像递归调用没写结束条件一样!
public class ErrorText {
	//创建ErrorExampe对象
	public static void main(String args []){
		ErrorExample error = new ErrorExample();
	}
}
class ErrorExample{
	private ErrorExample error = new ErrorExample();
	//重载构造器
	public ErrorExample(){
		//System.out.println("hello world!");
	}
}

Exception in thread "main" java.lang.StackOverflowError
	at net.hailei.exception.ErrorExample.<init>(ErrorText.java:10)
	at net.hailei.exception.ErrorExample.<init>(ErrorText.java:10)
	at net.hailei.exception.ErrorExample.<init>(ErrorText.java:10)
	at net.hailei.exception.ErrorExample.<init>(ErrorText.java:10)

    2.内存溢出,在一个循环里不停的执行相同操作,而且不释放空间,导致内存溢出错误
public class ErrorText {
	//创建ErrorExampe对象
	public static void main(String args []){
		StringBuilder sbd = new StringBuilder();
		while(true){
			sbd.append("Hello World!");
		}
	}
}

Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
	at java.util.Arrays.copyOf(Unknown Source)
	at java.lang.AbstractStringBuilder.expandCapacity(Unknown Source)
	at java.lang.AbstractStringBuilder.append(Unknown Source)
	at java.lang.StringBuilder.append(Unknown Source)

        上面两种错误都属于VirtualMachineError(虚拟机崩溃或用尽了它操作的资源),当然错误的类型是数不胜数的,大多数只能在处理特定问题时遇到,不过我们遇到错误的概率还是很小的,大多数情况下,我们都是和异常在打交道!
        二 异常总结
        异常分为强制异常和运行时异常,运行时异常常常由虚拟机替我们一手包办,而无需你去检测“我是不是传了一个空的引用,我的数组是不是越界啦!”这些由于疏忽难以被我们发现的问题。然而强制异常则要求我们在编译时必须对异常进行处理,至于是抛出异常还是捕获并处理异常就取决于你了!
        下面我们来看看两种方法的执行流程。
public class ExceptionText {
	public static void main(String[] args) throws MyException{
		//创建对象,调用方法
		ExceptionText et = new ExceptionText();
		et.study();
		//看看程序是否运行此段代码
		System.out.println("程序运行了此段代码!");
	}
	//要调用的方法
	public void study() throws MyException{
		throw new MyException();
	}
}
class MyException extends Exception{}

Exception in thread "main" net.hailei.exception.MyException
	at net.hailei.exception.ExceptionText.study(ExceptionText.java:13)
	at net.hailei.exception.ExceptionText.main(ExceptionText.java:7)

public class ExceptionText {
	public static void main(String[] args){
		//创建对象,调用方法
		ExceptionText et = new ExceptionText();
		et.study();
		//看看程序是否运行此段代码
		System.out.println("程序运行了此段代码!");
	}
	//要调用的方法
	public void study(){
		try {
			throw new MyException();
		} catch (MyException e) {
			System.out.println("我已经处理了异常!");
			e.printStackTrace();
		}
	}
}
class MyException extends Exception{}

我已经处理了异常!
程序运行了此段代码!
net.hailei.exception.MyException
	at net.hailei.exception.ExceptionText.study(ExceptionText.java:14)
	at net.hailei.exception.ExceptionText.main(ExceptionText.java:7)

       第一段代码,我并没有处理异常,而是使用thorws与throw关键字抛出异常。通过打印的代码可以得出结论:如果在方法内部抛出异常(或是在方法内部调用的其他方法抛出了异常),这个方法将在抛出异常的过程中结束!
       第二段代码,我用try{}块捕获了异常(它内部要很多捕获异常的方法),然后用catch(){}块处理了异常。通过打印的代码可以得出结论:当方法中的异常被捕获并得到处理,方法会继续向下运行!
       关于异常,我还有很多问题没有解决,诸如:具体问题中,在抛出异常与处理异常的选择问题(如何捕获异常,并给人醒目的提醒);异常链的问题;使用finaly进行清理的问题...新的问题常常伴随在你解决问题之后,让人应接不暇!
0
10
分享到:
评论

相关推荐

    Android迷你播放器-第一阶段共6小结-源代码下载.tar.gz

    4内存卡检索不到音乐的错误处理--程序内部空间管理; 5添加搜索功能--autoCompleteBox的使用; 6添加搜索定位功能(进阶)-使用filter过滤以及对汉语拼音的排序匹配,挤压效果; 7安全攻防第一战--对抗反编译,代码混淆...

    超市综合管理信息系统的设计

    第五阶段 项目总结和评估。 下面分别对这几个阶段的主要工作进行简单的介绍: (1)系统开始和可行性研究 系统开始和可行性研究是为了系统开发做的前期准备的。第一阶段多数工作和编写的资料是第二阶段的输入。第一...

    机票预订系统需求分析详细设计项目总结报告

    编写目的: 在本机票预定系统项目的前一阶段,也就是概要设计...在以后的软件测试以及软件维护阶段也可参考此说明书,以便于了解在详细设计过程中所完成的各模块算法设计,或在修改时找出在本阶段设计的不足或错误。

    经典软件测试报告模板

    者返回异常错误 ü 当对必填字段进行校验时,未输入必输字段,出现“The page cannot be displayed” 或者返回异常错误 ü 系统定义不能重复的字段输入重复数据后,出现“The page cannot be displayed”或 者返回...

    计算机二级Python题库超详细总结

    内容涵盖了Python的基本概念、数据类型、控制结构、函数、模块和包、输入输出、错误和异常处理等核心知识点,以及备考策略、考试技巧和备考资源等实用信息。 **适用人群:** 本教程适合所有准备参加计算机二级Python...

    微机组装与维修实训

    1.4 阶段小结 1.4.1 实训任务书 1.4.2 实训内容与时间安排表 1.4.3 调研报告 1.4.4 需求确定表 第2阶段 掀起盖头来——认识部件 2.1 认识硬件 2.1.1 微处理器 2.1.2 主板 2.1.3 内存 2.1.4 硬盘、软驱与光驱 2.1.5 ...

    Fuzzing_模糊测试--强制性安全漏洞发掘

    目录 作者序 译者序 前 言 第一部分 第1章 安全漏洞发掘方法学 1.1 白盒测试 1.1.1 源代码评审 1.1.2 工具和自动化 1.1.3 优点和缺点 1.2 黑盒测试 ...1.2.2 自动测试或模糊测试 1.2.3 优点和缺点 ...26.4 小结

    C++编程思想习题

    1.7小结 第2章 数据抽象 2.1声明与定义 2.2一个袖珍C库 2.3放在一起:项目创建工具 2.4什么是非正常 2.5基本对象 2.6什么是对象 2.7抽象数据类型 2.8对象细节 2.9头文件形式 2.10嵌套结构 2.11小结 2.12练习 第3章 ...

    dive into python

    1.9. 小结 2. 第一个 Python 程序 2.1. 概览 2.2. 函数声明 2.2.1. Python 和其他编程语言数据类型的比较 2.3. 文档化函数 2.4. 万物皆对象 2.4.1. 模块导入的搜索路径 2.4.2. 何谓对象? 2.5. 代码缩进 2.6....

    面向对象技术与UML课件及源代码-by 南邮-陈杨

    在章节中穿插了上机习题,并提供了答案,用于对该章内容进行阶段性总结演练。 作者长期从事教学工作,积累了丰富的经验,其“实战教学法”取得了很好的效果。本书适合教学。书中章节安排适当,将习题融于讲解的过程...

    数据库系统及应用课程总结.docx

    此外本章还介绍了数据库发展的三个阶段:人工管理阶段、文件系统阶段和数据库系统阶段。第二章介绍了数据模型和三层模式数据库。本章要求我们理解实体-联系方法,并学会绘制E-R图。此外还应掌握概念数据模型的意义和...

    黄河科技学院软件测试期末总结

    软件测试就是在软件投入运行前,对...定义2:软件测试是根据软件开发各阶段的规格说明和程序的内部结构而精心设计的一批测试用例(即输入数据及其预期的输出结果),并利用这些测试用 例运行程序,以及发现错误的过程。

    项目实施——九阴真经

    2.6.2 常见错误四:不注意收集异常的事实,挖掘背后的需求 18 2.7 现场调研阶段容易犯哪些错误?(三) 19 2.7.1 常见错误五:每天调研工作时间太长 19 2.7.2 常见错误六:聆听,而不是提供解决方案 20 2.8 现场调研...

    超越对手--软件项目经理的18种实用技能

    2.6.2 常见错误四:不注意收集异常的事实,挖掘背后的需求 18 2.7 现场调研阶段容易犯哪些错误?(三) 19 2.7.1 常见错误五:每天调研工作时间太长 19 2.7.2 常见错误六:聆听,而不是提供解决方案 20 2.8 现场调研...

    项目实施九阴真经《超越对手--软件项目经理的18种实用技能》

    2.6.2 常见错误四:不注意收集异常的事实,挖掘背后的需求 18 2.7 现场调研阶段容易犯哪些错误?(三) 19 2.7.1 常见错误五:每天调研工作时间太长 19 2.7.2 常见错误六:聆听,而不是提供解决方案 20 2.8 现场调研...

    Python第一阶段笔记汇总.docx

    (四)自定义异常:为了快速传递错误信息 108 四 迭代 108 (一)可迭代对象iterable 109 (二) 迭代器对象iterator 110 五 生成器generator 113 (一)生成器函数 114 (二)内置生成器 116 (三)生成器表达式 116 ...

    高级软件架构师复习提纲

    50、下面,哪些是Process Service的要求:/可以方便的修改和定义 /对于业务人员来说易于掌握 /方便的工具来开发和调试 /健壮的异常处理(交易补偿) /大的Process可以包含对于一系列小的Process的调用 51、MSF 构思...

    php网络开发完全手册

    1.7 小结 23 第2章 PHP的基础语法 24 2.1 语言构成与工作原理 24 2.2 常量与变量 25 2.2.1 常量的定义 25 2.2.2 变量的定义 26 2.2.3 变量的作用域 27 2.2.4 动态变量 29 2.3 运算符和关键字 29 2.4 流程控制语法 30...

    UML和模式应用(架构师必备).part06.rar

    20.6 异常和错误处理 20.7 定义Sale.makeLineItem方法 20.8 实现的顺序 20.9 测试驱动或测试优先的开发 20.10 将设计映射为代码的总结 20.11 NextGen POS程序简介 20.12 Monopoly程序简介 第21章 测试驱动...

Global site tag (gtag.js) - Google Analytics