文档章节

java异常如何抛出的?

DavorŠuke
 DavorŠuke
发布于 2015/06/13 17:53
字数 479
阅读 116
收藏 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
博文 6
码字总数 3159
作品 0
东城
程序员
JVM参数OmitStackTraceInFastThrow导致的异常栈信息不见了

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

哲别0
06/14
0
0
第33节:Java面向对象中的异常

Java中的异常和错误 Java中的异常机制,更好地提升程序的健壮性 throwable为顶级,Error和Exception Error:虚拟机错误,内存溢出,线程死锁 Exception:RuntimeException为空指针异常,数组...

达叔小生
08/27
0
0
Java 复习 —— 异常处理

前言 异常处理是程序设计中一个非常重要的方面,也是程序设计的一大难点,从C开始,你也许已经知道如何用if...else...来控制异常了,也许是自发的,然而这种控制异常痛苦,同一个异常或者错误...

learn_more
2015/08/21
0
0
Java学习系列文章:说说Java中的异常

在正常的程序设计中,程序异常处理是非常关键和重要的一部分。试想一个项目中没有一个好的异常处理,这个项目会怎么样? 什么是异常 异常其实是程序上的错误,包括程序逻辑错误和系统错误。比...

java高级架构牛人
06/29
0
0
用 JNI 进行 Java 编程(4)

高级主题 概述 从 Java 程序内调用本机代码破坏了 Java 程序的可移植性和安全性。尽管已编译的 Java 字节码保持了很好的可移植性,但必须为您打算用来运行该应用程序的每个平台重新编译本机代...

Jerikc
2012/10/08
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Go interface{} to string

package mainimport "fmt"func main() {var a interface{}a = "dsadjaldaldad"var b stringb = a.(string) // 话说,用人话说的话,这叫什么操作?fmt.Println(a, b)}...

taadis
8分钟前
0
0
数据库防火墙

数据库防火墙顾名思义是一款数据(库)安全设备,从防火墙这个词可以看出,其主要作用是做来自于外部的危险隔离。换句话说,数据库防火墙应该在入侵在到达数据库之前将其阻断,至少需要在入侵...

突突突酱
17分钟前
1
0
RDBMS 关系型数据库与 NoSQL 全面比较

随着互联网的不断发展,各种类型的应用层出不穷,所以导致在这个云计算的时代,对技术提出了更多的需求,主要体现在下面这四个方面: 低延迟的读写速度:应用快速地反应能极大地提升用户的满...

PeakFang-BOK
26分钟前
1
0
徒弟做了一个Python的实战小项目——银行系统

国际惯例:实践是检验真理的唯一标准。 众所周知,在编程过程中理论知识再充实也需要通过项目的炼金石。下面给大家看一下我徒弟做的一个小项目实战要求,是做一个银行系统,就是我们去银行办...

无也Python
32分钟前
2
0
vue.js响应式原理解析与实现

从很久之前就已经接触过了angularjs了,当时就已经了解到,angularjs是通过脏检查来实现数据监测以及页面更新渲染。之后,再接触了vue.js,当时也一度很好奇vue.js是如何监测数据更新并且重新...

peakedness丶
51分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部