文档章节

java异常如何抛出的?

DavorŠuke
 DavorŠuke
发布于 2015/06/13 17:53
字数 479
阅读 114
收藏 0
点赞 0
评论 0

    这几天工作遇到Exception的问题。

    1:出现异常剩下代码如何运行?代码如下:

public class ExceptionTest {
	public static void main(String[] args) {
		ExceptionTest foo = new ExceptionTest();
		foo.dateFormat(null);
		System.out.println("step end");
	}
	
	public Date dateFormat(String str){
		Date d = new Date();
		try {
			d = new SimpleDateFormat("yyyy-MM-dd").parse(str);
		} catch (ParseException e) {
		//} catch (Exception e) {	
			e.printStackTrace();
			System.out.println("exception...");
		}
		System.out.println("method end");
		return d;
	}
}

    原本我的理解出现的打印顺序应该是: 打印“堆栈异常信息”->“exception...”->“method end”->"step end"

    但是实际结果如下,异常1:    

Exception in thread "main" java.lang.NullPointerException
	at java.text.SimpleDateFormat.parse(SimpleDateFormat.java:1380)
	at java.text.DateFormat.parse(DateFormat.java:355)
	at webtest.ExceptionTest.dateFormat(ExceptionTest.java:19)
	at webtest.ExceptionTest.main(ExceptionTest.java:11)

   于是我把捕获异常范围扩到最大,也就是catch(Exception e),打印结果如下,异常2:    

java.lang.NullPointerException
	at java.text.SimpleDateFormat.parse(SimpleDateFormat.java:1380)
	at java.text.DateFormat.parse(DateFormat.java:355)
	at webtest.ExceptionTest.dateFormat(ExceptionTest.java:17)
	at webtest.ExceptionTest.main(ExceptionTest.java:10)
exception...
method end
step end

 于是这个结果算是符合我的预期。但是我还是有点不明白“异常1"如果说传入null不属于ParseException异常的话,疑问:

(1)那这个异常被谁捕获了?

(2)我的理解打印顺序应该是:"堆栈异常信息"->"method end"->"step end",那又是谁中断了程序运行呢?


2,异常被抛出,调用方法如何处理?代码如下:

public class ExceptionTest {
	public static void main(String[] args) {
		ExceptionTest foo = new ExceptionTest();
		try {
			foo.dateFormat(null);
		} catch (Exception e) {
			e.printStackTrace();//堆栈异常信息2
			System.out.println("main method exception");
		}
		System.out.println("step end");
	}
	
	public Date dateFormat(String str) throws Exception{
		Date d = new Date();
		try {
			d = new SimpleDateFormat("yyyy-MM-dd").parse(str);
		//} catch (ParseException e) {
		} catch (Exception e) {	
			e.printStackTrace();//堆栈异常信息1
			System.out.println("exception...");
		}
		System.out.println("method end");
		return d;
	}
}

我原本预期打印结果:"堆栈异常信息1"->"exception..."->"method end"->我也不知道"堆栈异常信息2"会不会出现->""->"main method exception"->"step end".

实际打印结果:

java.lang.NullPointerException
	at java.text.SimpleDateFormat.parse(SimpleDateFormat.java:1380)
	at java.text.DateFormat.parse(DateFormat.java:355)
	at webtest.ExceptionTest.dateFormat(ExceptionTest.java:22)
	at webtest.ExceptionTest.main(ExceptionTest.java:11)
exception...
method end
step end

疑问:

(1)main方法为什么没有捕获异常?

© 著作权归作者所有

共有 人打赏支持
DavorŠuke
粉丝 1
博文 5
码字总数 3159
作品 0
东城
程序员
JVM参数OmitStackTraceInFastThrow导致的异常栈信息不见了

问题描述 某天收到生产环境error日志告警(对error.log监控,超过一定大小就会给开发人员发送告警短信)。但是tail查看最新的异常信息只有这些,好忧伤: 后来有个同事从error.log前面开始看...

哲别0 ⋅ 06/14 ⋅ 0

java编程语言学习:异常处理

Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于PC、数据中心、游戏控制台、科学超级计算机、移动电话和互...

Java小辰 ⋅ 06/01 ⋅ 0

Android JNI学习(四)——JNI的常用方法的中文API

本系列文章如下: Android JNI(一)——NDK与JNI基础 Android JNI学习(二)——实战JNI之“hello world” Android JNI学习(三)——Java与Native相互调用 Android JNI学习(四)——JNI的常用方法...

隔壁老李头 ⋅ 05/09 ⋅ 0

JVM学习总结(一)运行时数据区

《深入Java虚拟机》这本书买了有一段时间了,当时看的时候就只是看,并没有边看边总结啥的,最后发现到脑子里面的根本所剩无几了。现在开始要好好归纳总结地再学习一遍。 运行时数据区域 JV...

hensemlee ⋅ 04/22 ⋅ 0

【死磕Sharding-jdbc】—–基于ssm

原文作者:阿飞Javaer 原文链接:https://www.jianshu.com/p/602e24845ed3 本篇文章讲解如何在ssm(spring、springmvc、mybatis)结构的程序上集成sharding-jdbc(版本为1.5.4.1)进行分库分...

飞哥-Javaer ⋅ 05/05 ⋅ 0

基于可靠消息方案的分布式事务(二):Java中的事务

前言:在上一篇文章 基于可靠消息方案的分布式事务:Lottor介绍 中介绍了常见的分布式事务的解决方案以及笔者基于可靠消息方案实现的分布式事务组件Lottor的原理,并展示了应用的控制台管理。...

aoho ⋅ 06/01 ⋅ 0

java编程新手入门学习的基础语法

Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于PC、数据中心、游戏控制台、科学超级计算机、移动电话和互...

Java小辰 ⋅ 05/28 ⋅ 0

深入理解java虚拟机阅读笔记(一)————java内存区域

第二章:Java内存区域与内存溢出 2.2 运行时数据区域 2.2.1 程序计数器: (1)、一块较小的内存空间 (2)、可看做当前线程执行的字节码的行号指示器 (3)、字节码解释器工作时通过改变这个...

qq_37468185 ⋅ 05/10 ⋅ 0

【JavaSE(十二)】JavaIO流(上)

原文地址:https://www.cloudcrossing.xyz/post/44/ 1 异常 1.1 异常概述 异常就是Java程序在运行过程中出现的错误。 程序的异常:Throwable类是 Java 语言中所有错误或异常的超类,其子类有...

苍云横渡 ⋅ 05/26 ⋅ 0

sharding-jdbc事务解读

序言 sharding-jdbc在分库分表方面提供了很大的便利性,在使用DB的时候,通常都会涉及到事务这个概念,而在分库分表的环境上再加上事务,就会使事情变得复杂起来。本章试图剖析sharding-jdbc...

xiaomin0322 ⋅ 06/06 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

收集自网络的wordpress 分页导航的代码教程(全网最全版)

wordpress 分页导航是用来切换文章的一个功能,添加了 wordpress 分页导航后,用户即可自由到达指定的页面数浏览分类文章,而这样的一个很简单功能却有很多朋友在用插件:WP-PageNavi,插件的...

Rhymo-Wu ⋅ 37分钟前 ⋅ 0

微服务 WildFly Swarm 入门

Hello World 就像前面章节中的其他框架一样,我们希望添加一些基本的 Hello-world 功能,然后在其上逐步添加更多的功能。让我们从在我们的项目中创建一个 HolaResources 开始。您可以使用您的...

woshixin ⋅ 44分钟前 ⋅ 0

Maven的安装和Eclipse的配置

1. 下载Maven 下载地址 2. 解压压缩包,放到自己习惯的硬盘中 此处我将其放到了 D:\Tools 目录下。 3. 配置环境变量 右键此电脑 -> 属性 -> 高级系统设置 -> 环境变量。 在系统变量中新建,变...

影狼 ⋅ 52分钟前 ⋅ 0

python pip使用国内镜像的方法

国内源 清华:https://pypi.tuna.tsinghua.edu.cn/simple 阿里云:http://mirrors.aliyun.com/pypi/simple/ 中国科技大学 https://pypi.mirrors.ustc.edu.cn/simple/ 华中理工大学:http://......

良言 ⋅ 52分钟前 ⋅ 0

对于url变化的spa应该如何使用微信jssdk

使用vue单页面碰上微信jssdk config验证失败的坑。第一次成功 之后切换页面全部失败,找到了解决方法,第一次验证成功后保存验证信息 切换页面时验证信息直接拿来用,加一个wx.error() 失败时...

孙冠峰 ⋅ 57分钟前 ⋅ 0

Spring Cloud Gateway 一般集成

SCF发布,带来很多新东西,不过少了点教程,打开方式又和以前的不一样,比如这个SCG,压根就没有入门指导,所以这里写一个,以备后用。 一、集成 pom.xml <dependency> <groupI...

kut ⋅ 今天 ⋅ 0

建造模式

《JAVA与模式》之建造模式

Cobbage ⋅ 今天 ⋅ 0

WePY框架开发的小程序如何在微信web开发者工具中运行起来

一、首先需要安装node.js,安装步骤如下: 首先下载安装包 https://nodejs.org/en/download/ 点击下载相应的zip版本 然后将文件夹解压到任意目录 比如我这里解压到了:C:\Program Files\node...

Helios51 ⋅ 今天 ⋅ 0

使用EnumSet 代替位域(32)

1、位域(Bit field):使用or 运算将几个常量合并到一个集合中 位操作,可以有效地执行 AND 、OR 这样的位操作 但是 位域比int 常量枚举缺点更多 2、java.util 包里面的EnumSet 类是有效的替...

职业搬砖20年 ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部