异常的最终去向是哪里?

本文详细介绍了程序异常的概念,包括异常产生的原因、自定义异常的方法及异常处理的策略。同时探讨了异常传递的过程及其在方法调用栈中的表现形式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

什么是异常:程序在运行过程中发生由于硬件设备问题、软件设计错误等导致的程序异常事件。异常本身是一个对象,产生异常就是产生了一个异常对象。异常都是从类Throwable派生出来。包括运行时异常和飞运行时异常。(这个多说无益,知道怎么处理就行)

 

如何产生的:是由系统自动实例化一个异常对象。那这里的系统指的就是JVM。当然、我们可以自己new一个异常对象将其抛出。

 

自定义异常:可以通过继承Exception或者其子类。

 

如何处理异常:通过try…catch…finally语句进行捕获异常。当然也可以不处理异常、通过关键字throws继续传递异常。注:没有try块、catch不能单独存在。Finally块永远都执行、除非你在catch块中退出系统(System.exit(0))try块中只有return并不能终止finally块的执行。RuntimeException的任何子类都无需再throws子句中声明。

 

异常传递:当我们不对产生的异常做任何处理、那么这个异常何去啊?它会向它的调用者传递这个异常。

 

方法调用栈:在程序中、没有说一个方法就像全部的东西的实现、而是充分的独立、一个方法处理一件事情、那么如果我有一个方法、需要使用另一个方法的处理结果、那么我没就在这个方法中调用另一个方法(如何调用?自己想)、这就是方法调用栈、通过这个“栈“,我们就知道它是什么特性了(后进先出)、

 

问:如果产生一个异常、不对进行任何处理、这个异常最终会抛向哪里?

解析:通过上面的提示、知道方法调用栈的存在、那么这个异常的产生肯定是在在方法调用栈的栈顶的那个方法、当然我们在看控制台抛出的是异常栈、如果我们不对其进行处理、那么它会继续向下抛(栈的特性)、一次都不对其处理、最后会抛到这个栈的栈底、就是程序的起始位置、那么一个java程序的入口地址是哪里呢?main方法、对、就是这、

 

问:那如果是J2EE应用呢?异常抛向哪里?前提也是不对其进行任何处理。

求解!

 

 

挺有意思的文章:http://www.iteye.com/topic/765287

透过JVM看Exception的本质:http://www.iteye.com/topic/857722

J2EE项目异常处理:http://www.iteye.com/topic/72170

译JVMS3 §2.10 Exceptionhttp://www.iteye.com/topic/1039883

异常处理艺术:http://zhxing.iteye.com/blog/374307

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值