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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 湛添友 中级黑马   /  2014-4-17 12:09  /  978 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

public class RuntimeDmeo
{
        public static void main(String args[]) throws Exception
        {
                Runtime r=Runtime.getRuntime();
                Process p=r.exec("notepad.exe RuntimeDmeo.java                                 Thread.sleep(1000);
        }
}
为什么sleep这里可以不try 而是可以抛  抛给虚拟机 虚拟机是怎么处理的?

评分

参与人数 1技术分 +1 收起 理由
黑妞~ + 1

查看全部评分

5 个回复

倒序浏览
osully 来自手机 金牌黑马 2014-4-17 12:15:53
沙发
你不是抛了个爸爸吗。。所有儿子异常都可以不处理。。虚拟机遇到异常就停止程序并打印异常信息吧
回复 使用道具 举报
Execption是所有可处理异常的父类
所以sleep抛出的异常 被Exception包括了
这里也是多态的一种表现吧!
回复 使用道具 举报
处理异常就两个方法!
一个是try
一个是抛throws

主函数也是函数啊!主函数抛的话就是抛给了jvm虚拟机,
我认为(个人观点),jvm会从方法上声明的异常开始,先从此声明的异常的final子类中找,看看这些子类能否捕捉出现的异常,如果没有,就依次向上找异常。按说处理的异常都应该是final子类异常。
回复 使用道具 举报
throws Excepiton 捕获所有异常。不用try 了。你的程序代码没问题虚拟机就管你的代码了。
回复 使用道具 举报
你try了的话就相当于你自己处理异常,抛了的话就相当于把异常丢给虚拟机处理,虚拟机遇到问题就自动报异常,这个我的见解
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马