`

异常处理学习例子

JVM 
阅读更多
          异常处理学习例子
   异常处理机制是JVM的方法调用堆栈.
   JVM用方法调用栈来跟踪每个线程中一系列的方法调用过程.该栈保存了每个调用方法的本地信息.对于独立的JAVA程序,可以一直回溯到该程序的入口方法main().当一个方法被调用时,JVM把描述该方法的栈结构置入栈顶,位于栈顶的方法为正在执行的方法.

   当一个JAVA方法正常执行完毕,JVM会从调用栈中弹出该方法的栈结构,然后继续处理前一个方法.如果JAVA方法在执行代码过程中抛出异常,JVM必须找到能捕获该异常的CATCH代码块.它首先查看当前方法是否存在这样的CATCH代码块,如果存在,就执行该CATCH代码块;否则,JVM会从调用栈中弹出该方法的栈结构,继续到前一个方法中查找合适的CATCH代码块,一直回溯到入口方法main().最后,如果JVM向上追溯到main()方法,仍然没有找到处理该异常的代码块,该线程就会异常终止.如果该线程是主线程,应用程序也将随之终止,此时JVM将把异常直接抛给用户,在用户终端上会看到原始的异常信息.

   在上述回溯过程中,如果JVM在某个方法中找了处理该异常的代码块,则该方法的栈结构将成为栈顶元素,程序流程将转到该方法的异常处理代码部分继续执行.

   注 : 在try/catch结构中,在try中抛出的异常,才是catch捕获的异常,catch捕获的异常不能捕获try中没有抛出的异常.

   如:
    try {
test.display();  //其抛出NotFoundException异常
} catch (NotFoundException e) {
       //此处catch只能捕获NotFoundException,如捕获IoException异
        //常,则此处代码块将报错.
   test.disNotFoundException();
   NotFoundException.disNotFoundException();
         }


   package com.test;

import java.util.ArrayList;

/**
* 异常处理的练习例子
*
* @author huguangxiong
*
*/
public class TestEception {

ArrayList<Me> result = new ArrayList<Me>();

/**
* @param args
*/
public static void main(String[] args) {

TestEception test = new TestEception();

Me me1 = new Me();
Me me2 = new Me();
me1.setMess("aaaa");
me2.setMess("dddd");

test.add(me1);
test.add(null);
test.add(me2);


try {
test.display();
} catch (NotFoundException e) {
test.disNotFoundException();
NotFoundException.disNotFoundException();
// throw new ErrorFoundException("用disNotFoundException()方法处理的NotFoundExceptionNotFoundException");
e.printStackTrace();
} catch (ErrorFoundException e) {
System.out.println("===========================");
e.printStackTrace();
}



}

// catch (NotFoundException e) {
// // test.disNotFoundException();
// NotFoundException.disNotFoundException();
// // throw new
// // ErrorFoundException("用disNotFoundException()方法处理的NotFoundExceptionNotFoundException");
// }

public void add(Me me) {
if (me == null) {
System.out.println("Me对象为NULL,不能添加Me对象");
result.add(null);
return;
}
result.add(me);
}

public Me get() throws NotFoundException {
Me me = result.get(0);
if (me == null)
throw new NotFoundException("在result集合中没有Me对象");

return me;
}

public void display() throws NotFoundException,ErrorFoundException{
Me me = null;
Me me2 = null;
// try {
me = this.get();
if (me2 == null)
throw new ErrorFoundException("不能通过get()方法获得Me对象");

System.out.println("display中Me对象的属性是: " + me.getMess());
// } catch (NotFoundException ex) {
// this.disNotFoundException();
// throw new
// ErrorFoundException("用disNotFoundException()方法处理的NotFoundExceptionNotFoundException");
// }

}

public void disNotFoundException() {
Me me1 = new Me();
me1.setMess("bbbb");
result.add(me1);
System.out.println("添加Me1对象成功");
}

}

class Me {
private String mess;

public String getMess() {
return mess;
}

public void setMess(String mess) {
this.mess = mess;
}

public void display() {
System.out.println("mess of Me is : " + mess);
}
}

class NotFoundException extends Exception {

public NotFoundException() {
super();
}

public NotFoundException(String msg) {
super(msg);
}

public static void disNotFoundException() {
Me me1 = new Me();
me1.setMess("bbbb");
System.out.println("添加Me1对象成功");
}

}

class ErrorFoundException extends Exception {

public ErrorFoundException() {
super();
}

public ErrorFoundException(String msg) {
super(msg);
}
}
  
分享到:
评论

相关推荐

    一个专门处理C++异常的类和例子

    在C++编程中,异常处理是一项关键技能,它允许程序员优雅地处理运行时错误,而不会导致程序崩溃。本文将详细介绍...通过阅读和学习提供的源代码,可以深入理解C++异常处理机制以及如何利用自定义类进行增强。

    Struts2之异常处理案例struts003

    Struts2是一个非常流行的Java Web框架,用于构建和维护可扩展且易于管理的企业级应用程序。在Struts2中,异常处理是一项重要的功能,它...结合给出的博客链接,可以深入学习更多关于Struts2异常处理的实践案例和技巧。

    文件异常处理的一个例子

    这个例子,"文件异常处理的一个例子",显然展示了如何在C++环境下处理可能出现的文件相关异常情况。下面,我们将深入探讨这一主题,分析相关知识点。 首先,我们需要理解文件异常可能来自何处。在读取、写入或操作...

    c++异常处理机制详细文档

    C++异常处理机制是编程中一个重要的概念,它允许程序在遇到错误或异常情况时进行有序的恢复,而不是简单地崩溃。在这个详细文档中,我们将深入探讨C++异常处理的各个方面,包括底层的实现机制,如LSB(Linux ...

    C++ 各种异常处理机制 演示代码

    最后,压缩包中的“Exception”文件可能包含了上述两种异常处理机制的演示代码,供学习者实践和理解。通过阅读和运行这些代码,你可以更深入地了解如何在实际项目中应用C++的异常处理和Windows的SEH。 总之,理解和...

    Java异常处理和最佳实践(含案例分析).pdf

    通过本文的学习,您将了解Java异常的分类、为什么finally块中的代码总是会执行、Java异常处理的不规范案例、Java异常处理的最佳实践等。 一、概述 Java异常处理并不是一个简单的事情,不仅初学者很难理解,甚至...

    Java学习资料-异常处理

    以下是一个简单的异常处理例子: ```java try { // 可能抛出异常的代码 int num = Integer.parseInt(input.nextLine()); // 其他操作... } catch (NumberFormatException e) { // 处理数字格式异常 System.out...

    C# 异常处理典型实例

    在C#编程中,异常处理是一项至关重要的技能,它能够帮助开发者编写出更健壮、更稳定的代码。本文将深入探讨C#中的异常处理机制,包括如何处理除0异常、无效对象异常以及如何自定义异常。我们将通过具体的实例来解析...

    c#闰年源代码 带有异常处理

    总结来说,闰年判断是C#学习过程中的一个重要实践,结合异常处理,可以帮助开发者更好地理解和掌握错误处理机制,提高程序的稳定性和可靠性。在实际开发中,良好的异常处理是保证软件质量不可或缺的一部分。通过学习...

    异常处理机制

    异常处理是计算机编程中一个至关重要的概念,尤其是在大型软件系统中。它允许程序在遇到错误或不可预见的情况时,能够优雅地恢复并继续执行,而不是突然崩溃。在本文中,我们将深入探讨异常处理机制,包括它的原理、...

    springboot整合thymeleaf+maven实现异常处理页面

    通过这个整合,我们不仅了解了如何在 SpringBoot 中使用 Thymeleaf 和 Maven,还学习了如何实现优雅的异常处理,提高了应用的稳定性和用户体验。同时,这个案例也展示了如何在实际开发中结合多种技术,解决具体问题...

    一个简单的VC 异常处理例子.rar

    在VC++编程环境中,异常处理是一项关键...总的来说,学习和掌握VC++的异常处理对于提升你的编程技能和编写高质量的软件至关重要。通过实践这个例子,你将能够更好地理解异常处理的工作原理,并将其应用到自己的项目中。

    Java第10章 异常处理含源代码

    在Java编程语言中,异常...通过学习和实践这些异常处理的知识,Java开发者能够编写出更加健壮和易于维护的代码,有效地处理程序运行时可能遇到的各种问题。结合提供的源代码,可以深入理解和掌握Java异常处理的精髓。

    异常处理

    标签中的“源码”提示我们可以通过查看具体的源代码来学习和理解Win32异常处理。而“工具”可能指的是利用调试工具,如Visual Studio的调试器,来分析异常发生的原因和位置,以便进行更精确的调试和修复。 压缩包中...

    java基础知识学习教程-8异常处理.pptx

    " Java 异常处理基础知识" Java 异常处理是 Java 语言中的一种错误处理机制,用于处理程序在运行过程中可能出现的意外情况。异常处理机制可以提高程序的安全性、可靠性和使用体验性。 在 Java 中,异常处理是通过...

    大数据之数据异常值分析与处理

    在大气污染预测精度分析的案例中,使用沈阳市的空气质量数据,异常值的存在对分析有害。箱线图是一种识别异常值的有效工具,定义异常值为低于Q1-1.5IQR或高于Q3+1.5IQR的值。当发现异常值后,通常选择将其视为缺失值...

    易语言源码易语言HOOK异常处理源码.rar

    4. 应用场景示例:源码可能通过实际例子展示了HOOK异常处理在实际项目中的应用,如调试工具、安全防护软件等。 5. 自定义异常类:易语言可能支持自定义异常类,源码中可能会有创建和抛出自定义异常的相关代码。 6....

    《Java程序设计案例教程》教学课件07异常处理.pptx

    模块7 异常处理 《Java程序设计案例教程》教学课件07异常处理全文共31页,当前为第1页。 学习目标 01 了解异常产生的原因。 02 了解Java异常体系结构,以及受检异常和未受检异常的区别。 03 掌握使用try-catch-...

    这是一个异常处理的例子,主要处理被零除的浮点操作DbgOut.shtml

    标题中的“异常处理的例子,主要处理被零除的浮点操作DbgOut.shtml”提示我们,这个示例可能涉及到编程中的错误处理,特别是与浮点数除法相关的异常。在编程中,当尝试执行除以零的操作时,系统通常会抛出一个异常,...

    异常值处理

    机器学习异常值处理,数据预处理之异常值处理 一、什么样的值是异常值? 简单来说,即在数据集中存在不合理的值,又称离群点。 我们举个例子,做客户分析,发现客户的年平均收入是80万美元。 但是,有两个客户的年...

Global site tag (gtag.js) - Google Analytics