文档章节

java异常如何抛出的?

DavorŠuke
 DavorŠuke
发布于 2015/06/13 17:53
字数 479
阅读 132
收藏 0

码上生花,ECharts 作品展示赛正式启动!>>>

    这几天工作遇到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
粉丝 3
博文 6
码字总数 3159
作品 0
东城
程序员
私信 提问
加载中
请先登录后再评论。
异常

标准异常的层次结构 Java标准异常的层次结构代表的分类绝对是一个败笔。因为所有的异常对象都是在运行时抛出的,没听说过有什么编译期异常。因此RuntimeException类代表的实际上是逻辑错误导...

长平狐
2012/08/28
180
0
消灭bug!Java异常处理知识点和异常链机制

Java异常处理知识点和异常链机制 异常处理是程序设计中一个非常重要的方面,毕竟人无完人,不可能永不犯错,程序中有异常是很正常的, Java语言在设计的当初就考虑到这些问题,提出异常处理的...

osc_uqwpc1e2
2019/12/27
11
0
如何修复Java中的VirtualMachineError

即使是最好的代码也会抛出错误,对开发人员而言这意味着需要知道如何修复它们。在这篇文章中,Ram Lakshmanan 介绍了许多不同类型的 VirtualMachineError 以及如何解决这些问题,在应用程序不...

java菜分享
2019/01/28
17
0
JAVA基础再回首(十九)——异常的概述、Try…Catch、多异常处理、Throws、throw、finally、自定义异常及异常的注意事项

JAVA基础再回首(十九)——异常的概述、Try…Catch、多异常处理、Throws、throw、finally、自定义异常及异常的注意事项 版权声明:转载必须注明本文转自程序员杜鹏程的博客:http://blog.cs...

Aduroidpc
2016/09/03
0
0
Java的Exception和Error面试题10问10答

在Java核心知识的面试中,你总能碰到关于 处理Exception和Error的面试题。Exception处理是Java应用开发中一个非常重要的方面,也是编写强健而稳定的Java程序的关键,这自然使它成为面试题中的...

lwei
2013/10/10
1.9W
48

没有更多内容

加载失败,请刷新页面

加载更多

BIO、NIO、AIO、Netty面试题

https://juejin.im/post/5e9421836fb9a03c7b3051bb

JaneRoad
23分钟前
19
0
elementui table缩略图滑过放大图片

html中 <el-table-column prop="qr_image" label="缩略图" width="180"> <template slot-scope="scope"> <el-popover trigger="hover" title="" placem......

大换子
32分钟前
16
0
家谱软件中的循环 - Cycles in family tree software

问题: I am the developer of some family tree software (written in C++ and Qt). 我是一些家庭树软件的开发者(用C ++和Qt编写)。 I had no problems until one of my customers mailed......

javail
34分钟前
23
0
MySQL 多表关联一对多查询取最新的一条数据

SQL语句 SELECT SQL_CALC_FOUND_ROWS* FROMtableA aLEFT JOIN (SELECTBC.* FROM( SELECT MAX( id ) AS cid FROM tableB GROUP BY code ) ACLEFT JOIN tableB B...

珞木橘子
41分钟前
16
0
nacos的启动方式以及注意的点

这个单机模式的启动方式 sh startup.sh -m standalone 注意,必须要加参数,如果不加参数启动了,无法正常访问 如果在用这个命令(sh startup.sh -m standalone)之前直接使用sh startup.sh ,...

千年典韦
51分钟前
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部