这一篇博客用例子讲述一下异常的处理过程。那些 我们一直惴惴不安 又充满好奇的未来 会在心里隐隐约约地觉得它们是明亮的。

异常的执行过程

一、实例一:return语句

public class ExceptionTest_1 {
public static void main(String[] args) {
int result = 0;
try {
System.out.println("before result");
result = 9 / 0;
System.out.println("after result");
} catch (Exception e) {
System.out.println("exception" + e.getMessage() + ", result: " + result);
return;
} finally {
System.out.println("final execute, " + result);
}
System.out.println("out of try statement, " + result);
}
}

执行的结果如下:

before result
exception/ by zero, result:
final execute,

将上述代码result = 9 / 0改为 result = 9 / 2;也就是不产生异常,执行的结果如下:

before result
after result
final execute,
out of try statement,

二、实例二:try里面有try语句

public class ExceptionTest_2 {

    public static void main(String[] args) {
try {
if (1 + 2 > 2) {
throw new FileNotFoundException();
}
try {
throw new FileNotFoundException();
} catch (FileNotFoundException e) {
System.out.println("world hello");
}
} catch (Exception e) {
System.out.println("hello world");
} finally {
System.out.println("final action");
}
}
}

执行的结果如下:

hello world
final action

如果将if(1 + 2 > 2)改变if(1 + 2 > 4),也就是try块里面没有抛出异常。执行的结果如下:

world hello
final action

简短的异常说明:

当抛出异常后,会发生以下的事情。
、用new在堆上创建异常对象,当前的执行路径被终止,并从当前环境中弹出异常对象的引用。
、异常处理机制接管程序,并寻找一个恰当的地方继续执行程序。
、如果有定义了final,那么会执行final块的代码。

三、自定义异常并定义抛错的信息

public class ExceptionTest {
@Test
public void exception_message_test1() {
throw new ValidateRuntimeException("my name is huhx."); // 调用的是getMessage()方法
}
} class ValidateRuntimeException extends RuntimeException {
public ValidateRuntimeException(String message) {
super(message);
} @Override
public String getMessage() {
String message = super.getMessage();
System.out.println("message: " + message);
return message + "hello";
}
}

上述代码的运行效果如下:为什么会打印了三次呢?

message: my name is huhx.
message: my name is huhx.
message: my name is huhx. com.linux.huhx.ValidateRuntimeException: my name is huhx.hello at com.linux.huhx.ExceptionTest.exception_message_test1(ExceptionTest.java:)
  ........

友情链接

java基础---->Java中异常的使用(二)的更多相关文章

  1. java基础---->java中正则表达式二

    跟正则表达式相关的类有:Pattern.Matcher和String.今天我们就开始Java中正则表达式的学习. Pattern和Matcher的理解 一.正则表达式的使用方法 一般推荐使用的方式如下 ...

  2. Java基础-Java中23种设计模式之常用的设计模式

    Java基础-Java中23种设计模式之常用的设计模式 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.   一.设计模式分类 设计模式是针对特定场景给出的专家级的解决方案.总的来说设 ...

  3. Java基础-Java中的内存分配与回收机制

    Java基础-Java中的内存分配与回收机制 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一. 二.

  4. Java基础-Java中的并法库之重入读写锁(ReentrantReadWriteLock)

    Java基础-Java中的并法库之重入读写锁(ReentrantReadWriteLock) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 在学习Java的之前,你可能已经听说过读 ...

  5. Java基础-Java中的并法库之线程池技术

    Java基础-Java中的并法库之线程池技术 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.什么是线程池技术 二.

  6. Java基础-JAVA中常见的数据结构介绍

    Java基础-JAVA中常见的数据结构介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.什么是数据结构 答:数据结构是指数据存储的组织方式.大致上分为线性表.栈(Stack) ...

  7. Java基础(中)

    面向对象基础 面向对象和面向过程的区别 两者的主要区别在于解决问题的方式不同: 面向过程把解决问题的过程拆成一个个方法,通过一个个方法的执行解决问题. 面向对象会先抽象出对象,然后用对象执行方法的方式 ...

  8. Java基础学习中一些词语和语句的使用

    在Java基础学习中,我们刚接触Java会遇到一些词和语句的使用不清的情况,不能很清楚的理解它的运行效果会是怎么样的,如:break,continue在程序中运行效果及跳转位置, 1.先来看看brea ...

  9. Java基础-Java中的堆内存和离堆内存机制

    Java基础-Java中的堆内存和离堆内存机制 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.

  10. Java基础__Java中自定义集合类

    Java基础__Java中集合类 传送门 自定义MyArrayList集合实现:增加数据.取数据.查看集合中数据个数方法 package com.Gary; public class MyArrayL ...

随机推荐

  1. Oracle XE安装具体解释

    一.原数据库的卸载       数据库的卸载就不多说了,讲一下过程:       1.运行Oracle Uninstall,卸载Oracle产品     2.删除regedit下的全部Oracle相关 ...

  2. 【Unity】开发WebGL内存概念具体解释和遇到的问题

    自增加unity WebGL平台以来.Unity的开发团队就一直致力于优化WebGL的内存消耗. 我们已经在Unity使用手冊上有对于WebGL内存管理的详尽分析,甚至在Unite Europe 20 ...

  3. eclipse 10个常用 快捷键

    Eclipse中10个最有用的快捷键组合  一个Eclipse骨灰级开发者总结了他认为最有用但又不太为人所知的快捷键组合.通过这些组合可以更加容易的浏览源代码,使得整体的开发效率和质量得到提升.    ...

  4. MS SQL表字段自增相关的脚本

    --查询表是否有自增字段 SELECT OBJECTPROPERTY(OBJECT_ID('[表名]'), 'TableHasIdentity') --查询表的自增字段 SELECT COLUMN_N ...

  5. linux 使用FIO测试磁盘iops 方法详解

    FIO是测试IOPS的非常好的工具,用来对硬件进行压力测试和验证,支持13种不同的I/O引擎, 包括:sync,mmap, libaio, posixaio, SG v3, splice, null, ...

  6. atitit.编程语言的未来趋势与进化结果

    atitit.编程语言的未来趋势与进化结果 1 语言就像物种一样,会形成进化树,没有前途的分支将枯死脱落. 1 2 机器语言 1 3 汇编语言 2 4 C语言, 硬件抽象层 2 5 高级语言:java ...

  7. LPC(Low Pin Count) 与SIO(Super IO)

    记录bios学习的点点滴滴,虽然已经学了很长时间才发出来,但就当是温故而知新吧,由于水平有限,难免存在错误,望指正,同时感谢CSDN提供的平台. 1.LPC 定义:​ Intel所定义的PC接口,将以 ...

  8. 安装CentOS7后,无法联网,用yum安装软件提示 cannot find a valid baseurl for repo:base/7/x86_64 的解决方法

    无法联网的明显表现会有: 1.yum install出现 Error: cannot find a valid baseurl or repo:base 2.ping host会提示unknown h ...

  9. UIViewController的生命周期及iOS程序执行顺序 和ios6 处理内存警告

    当一个视图控制器被创建,并在屏幕上显示的时候. 代码的执行顺序1. alloc                                   创建对象,分配空间2.init (initWithN ...

  10. iTunes历史各个版本下载地址

    地址:http://www.oldapps.com/itunes.php