`
- 浏览:
152320 次
- 来自:
...
-
异常处理学习例子
异常处理机制是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);
}
}
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
在C++编程中,异常处理是一项关键技能,它允许程序员优雅地处理运行时错误,而不会导致程序崩溃。本文将详细介绍...通过阅读和学习提供的源代码,可以深入理解C++异常处理机制以及如何利用自定义类进行增强。
Struts2是一个非常流行的Java Web框架,用于构建和维护可扩展且易于管理的企业级应用程序。在Struts2中,异常处理是一项重要的功能,它...结合给出的博客链接,可以深入学习更多关于Struts2异常处理的实践案例和技巧。
这个例子,"文件异常处理的一个例子",显然展示了如何在C++环境下处理可能出现的文件相关异常情况。下面,我们将深入探讨这一主题,分析相关知识点。 首先,我们需要理解文件异常可能来自何处。在读取、写入或操作...
最后,压缩包中的“Exception”文件可能包含了上述两种异常处理机制的演示代码,供学习者实践和理解。通过阅读和运行这些代码,你可以更深入地了解如何在实际项目中应用C++的异常处理和Windows的SEH。 总之,理解和...
Python中的异常处理是编程实践中非常重要的一个概念,它允许开发者优雅地处理程序运行时可能出现的错误,确保程序的稳定性和用户体验。...学习和熟练掌握Python的异常处理机制对于编写稳定、可靠的代码至关重要。
通过本文的学习,您将了解Java异常的分类、为什么finally块中的代码总是会执行、Java异常处理的不规范案例、Java异常处理的最佳实践等。 一、概述 Java异常处理并不是一个简单的事情,不仅初学者很难理解,甚至...
以下是一个简单的异常处理例子: ```java try { // 可能抛出异常的代码 int num = Integer.parseInt(input.nextLine()); // 其他操作... } catch (NumberFormatException e) { // 处理数字格式异常 System.out...
在C#编程中,异常处理是一项至关重要的技能,它能够帮助开发者编写出更健壮、更稳定的代码。本文将深入探讨C#中的异常处理机制,包括如何处理除0异常、无效对象异常以及如何自定义异常。我们将通过具体的实例来解析...
总结来说,闰年判断是C#学习过程中的一个重要实践,结合异常处理,可以帮助开发者更好地理解和掌握错误处理机制,提高程序的稳定性和可靠性。在实际开发中,良好的异常处理是保证软件质量不可或缺的一部分。通过学习...
异常处理是计算机编程中一个至关重要的概念,尤其是在大型软件系统中。它允许程序在遇到错误或不可预见的情况时,能够优雅地恢复并继续执行,而不是突然崩溃。在本文中,我们将深入探讨异常处理机制,包括它的原理、...
通过这个整合,我们不仅了解了如何在 SpringBoot 中使用 Thymeleaf 和 Maven,还学习了如何实现优雅的异常处理,提高了应用的稳定性和用户体验。同时,这个案例也展示了如何在实际开发中结合多种技术,解决具体问题...
《C语言程序设计异常处理》PPT学习教案主要讲解了C语言中异常处理的基本思想、实现机制以及相关实践。在C语言中,异常处理是一种处理程序运行时错误的方法,它允许程序员优雅地处理不可预见的问题,而不是让程序崩溃...
在VC++编程环境中,异常处理是一项关键...总的来说,学习和掌握VC++的异常处理对于提升你的编程技能和编写高质量的软件至关重要。通过实践这个例子,你将能够更好地理解异常处理的工作原理,并将其应用到自己的项目中。
在Java编程语言中,异常...通过学习和实践这些异常处理的知识,Java开发者能够编写出更加健壮和易于维护的代码,有效地处理程序运行时可能遇到的各种问题。结合提供的源代码,可以深入理解和掌握Java异常处理的精髓。
通过学习和熟练掌握异常处理机制,开发者可以编写出更健壮的代码,有效应对程序运行时可能出现的各种问题,提高软件的稳定性和用户体验。异常处理是Java编程中的核心概念,理解和实践异常处理是成为专业Java开发者的...
标签中的“源码”提示我们可以通过查看具体的源代码来学习和理解Win32异常处理。而“工具”可能指的是利用调试工具,如Visual Studio的调试器,来分析异常发生的原因和位置,以便进行更精确的调试和修复。 压缩包中...
" Java 异常处理基础知识" Java 异常处理是 Java 语言中的一种错误处理机制,用于处理程序在运行过程中可能出现的意外情况。异常处理机制可以提高程序的安全性、可靠性和使用体验性。 在 Java 中,异常处理是通过...
在大气污染预测精度分析的案例中,使用沈阳市的空气质量数据,异常值的存在对分析有害。箱线图是一种识别异常值的有效工具,定义异常值为低于Q1-1.5IQR或高于Q3+1.5IQR的值。当发现异常值后,通常选择将其视为缺失值...
4. 应用场景示例:源码可能通过实际例子展示了HOOK异常处理在实际项目中的应用,如调试工具、安全防护软件等。 5. 自定义异常类:易语言可能支持自定义异常类,源码中可能会有创建和抛出自定义异常的相关代码。 6....