`
草帽当家的
  • 浏览: 24970 次
  • 性别: 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
分享到:
评论

相关推荐

    毕业设计阶段性总结 毕业设计阶段性总结

    其次,毕业设计阶段性总结可以帮助学生查找和解决问题,避免在未来的职业生涯中出现同样的错误。最后,毕业设计阶段性总结可以帮助学生提高自己的设计和开发能力,为未来的职业生涯打下基础。 在毕业设计阶段性总结...

    课题各阶段计划和总结三阶段.pdf

    3. 课题结束阶段总结: - 成果整理:对研究过程中取得的成果进行汇总和整理,形成最终的研究报告。 - 经验分享:总结课题研究过程中的经验教训,为后续课题提供参考。 - 成果发布:通过学术会议、期刊论文等形式...

    Java异常处理总结

    ### Java异常处理总结 #### 一、Java异常的基础知识 在Java编程中,异常处理是一项极其重要的技术。异常处理能够帮助开发者优雅地处理程序运行时遇到的问题,避免程序崩溃,并提供给用户友好的反馈信息。 **什么...

    java程序错误类型及异常处理.doc

    总结来说,理解并掌握Java程序的错误类型和异常处理是成为合格Java程序员的关键。通过有效的调试和异常处理,能显著提高代码质量和程序的健壮性。在实际编程中,应当养成良好的编程习惯,尽量减少错误的发生,并熟练...

    java异常小结

    传统的错误处理方式,比如通过特殊返回值来表示异常,存在一些问题,如混淆正确的返回值和异常值,降低代码可读性,以及要求调用者对底层函数有深入理解。而Java的异常处理则解决了这些问题,通过抛出异常对象并捕获...

    【软件测试】: 软件测试的测试阶段总结:需求阶段、设计编码阶段、测试阶段、用户测试阶段.doc

    "软件测试的测试阶段总结" 软件测试是软件开发过程中的重要组成部分,旨在确保软件产品的质量和可靠性。软件测试可以分为四个阶段:需求阶段、设计编码阶段、测试阶段和用户测试阶段。每个阶段都有其特定的职责和...

    软件工程中的错误处理与异常机制.pptx

    随着技术的发展,错误处理和异常机制也在不断地进步。未来的趋势可能会包括: 1. **自动化错误处理**:通过集成机器学习和人工智能技术,实现对错误的自动检测和处理。 2. **异常预测与预防**:利用大数据分析和...

    JAVA基础阶段总结

    ### JAVA基础阶段总结 #### 一、JAVA简介与特点 **JAVA** 是一种高级编程语言,它被设计用于编写能够跨平台运行的应用程序。由 Sun Microsystems 公司于1995年推出,并在2010年被 Oracle 公司收购。JAVA 技术以其...

    软件工程实践中的错误处理与异常处理2.pptx

    - 通过复盘和总结错误处理过程,发现问题并改进,提升团队的错误处理能力。 #### 第三章 错误处理的挑战与解决方案 **大规模系统的错误处理** - **异步系统的错误处理解决方案**:需要高效的消息队列和优秀的异常...

    软件工程实践中的错误处理与异常处理3.pptx

    综上所述,在软件工程实践中,错误处理和异常处理是非常关键的技术领域。通过对这些知识点的学习和应用,可以显著提高软件的质量和稳定性,同时也能够提升用户的使用体验。在面对不同的应用场景时,开发者需要灵活...

    C++常见错误总结及解决办法

    1. **编译错误**:编译阶段是程序生命周期的第一步,常见的错误包括语法错误、未声明的标识符、类型不匹配等。解决办法通常涉及检查代码的语法、确保所有使用的变量和函数都已正确声明,并且类型与上下文匹配。 2. ...

    ChatGPT技术的错误处理与异常场景识别方法探究.docx

    但是,由于该技术的发展尚处于初级阶段,其中的错误处理和异常场景识别仍然面临一些挑战。 一、错误处理的挑战 在与 ChatGPT 进行对话时,我们常常会发现一些错误的输出,这种情况可能是由于模型的训练数据不完善...

    struts资料\前半阶段小结

    在"struts资料\前半阶段小结"这个主题中,我们可以理解为是对学习或使用Struts框架初期阶段的一个总结。以下是对Struts框架核心知识点的详细解释: 1. **MVC模式**:MVC是一种设计模式,用于分离应用程序的数据、...

    小学数学课堂教学中错误资源的有效利用的研究结题报告.pdf

    实践阶段则注重在实际教学中运用和探索错误资源,通过定期的小结不断调整和完善方法。反思阶段,教师们深入探讨研究过程中遇到的问题,总结经验教训。最后的总结阶段,对整个研究过程进行了全面回顾,提炼出研究成果...

    Python 错误和异常

    【Python 错误和异常】 在编程过程中,错误和异常是常见的问题,它们分为两种主要类型:语法错误和异常。了解并能有效地处理这两种错误是编写健壮Python代码的关键。 ### 1. 语法错误(解析错误) 语法错误,也...

    KEIL常见错误总结

    本文档是对KEIL使用过程中遇到的各种常见错误的综合总结,旨在帮助用户快速定位并解决出现的问题,避免不必要的困扰。 一、编译错误 1. **未定义的符号**:当代码中引用了未声明的变量、函数或宏时,编译器会报...

    Java异常处理-异常处理知识点总结及企业真题

    在Java中,异常的体系结构基于`java.lang.Throwable`类,它是所有异常和错误的根类。`Throwable`有两个主要的子类:`Error`和`Exception`。`Error`类通常用于表示JVM无法解决的严重问题,如栈溢出或内存耗尽,一般不...

    异常机制的总结与处理

    异常在Java中被分为两个主要类别:错误(Error)和异常(Exception)。错误通常是JVM内部错误或资源耗尽,程序员无法直接处理。异常则包括编程错误或外部因素引起的可恢复问题,程序员可以处理这类异常以恢复程序的...

Global site tag (gtag.js) - Google Analytics