A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 刘晓康 中级黑马   /  2012-4-6 23:12  /  2514 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

在编写方法时我们可以throws该方法可能产生的异常,交由该方法的调用者去处理,但在main方法后throws的异常,由谁处理呢?不会是编译程序吧,那以后写程序偷懒,都在main方法后面声明异常而不处理,也没好处啊?

8 个回复

倒序浏览
这个涉及到就业班里的客户端与服务器交互的内容,现阶段没必要了解,只要知道可以这么做就行了...
回复 使用道具 举报
由虚拟机处理,默认处理方式只会在控制台打印栈信息
如果我们的方法不再被其他的方法调用,我们最好自己处理异常,当发生错误时我们可以解决。
最简单的是我们可以再catch里写一句话,当发生错误时可以方便我们检查。
还有,当我们进行网络编程时,我们可以在finally里关闭我们的socket和io流连接,如果我们直接throws的话,那么当发生错误时,我们的socket和io流有可能没有close掉,那么就会造成内存的泄露。

评分

参与人数 1技术分 +1 收起 理由
岳民喜 + 1

查看全部评分

回复 使用道具 举报
main方法后throws的异常由虚拟机来处理。对于 在main方法后面声明异常而不处理 ,在真实的应用中那可不行,因为在完成不同的业务功能是肯定会抛出各种异常,我们需要根据实际情况,将他catch住。如:IO操作发生异常,不能直接就完外抛,不然,IO资源没有关闭,造成内存泄露。

评分

参与人数 1技术分 +1 收起 理由
岳民喜 + 1

查看全部评分

回复 使用道具 举报
在main方法后throws的异常由java虚拟机处理。在编程的时候有问题最好还是不要抛为好,最好try一下仔catch处理一下。
问题不处理的话,程序一有点小问题就停下来。这样的程序是不稳定,不完善的。程序有问题时try一下再处理,就算有问题,也可以进过catch处理程序照样进行运行。
回复 使用道具 举报
main是由于虚拟机调用的,当然是给虚拟机了呀,然后按照虚拟机默认处理机制进行处理的。
回复 使用道具 举报
你要想的是如果你每次都偷懒。。那么每次执行都异常的地方就不会往下执行。。。不去try。。catch。。那么每次执行到异常的地方就会放回到你调用的函数。。最后返回到主函数。。到main方法。。到虚拟机。。那样就会有很多本来必须要被执行的东西。。没有执行到。。。而且你第一次不try。。catch。。调用的方法的语句也要try。。catch。。一直不捕获,,就会错过很多东西。。就好比。。你遇到事情就后退。。你就会错过很多风景。。。
回复 使用道具 举报
在主函数上抛异常,是java VM处理,  
你若是放在main后面不出理的话,那么你抛得异常是没有太大意义的
回复 使用道具 举报
pray 高级黑马 2014-4-26 03:34:41
9#
真乃神人啊!楼主的帖子实在是光彩夺目。子曰:三人行而必有我师焉。斯言善哉。不知不觉上网这么多年,好的坏的PP都看过了,看多了。渐渐的也觉得没什么意思了。渐渐觉得自己已经达到奋斗的顶峰了。可是,第一眼看到楼主浅笑嫣然的时候,我的眼前竟然感觉一亮!仿佛看到了倾城倾国的美人,正轻摇柳步款款而行。正好似楼主的外表,相貌端正,天庭饱满。好片啊!只有那种真理在握,洞视这个世界真实本质的人,才能显示出这样惊人的魅力。在日益苍白肤浅的网络里,我从楼主的PP中不但看到了美丽,更加看到了网络的希望。为表达我对楼主的敬意,也是为了向楼主学习。我决心要把这个帖子顶上去!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马