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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王广彬 中级黑马   /  2012-8-10 01:04  /  1378 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

class Math{
        public int div(int i,int j) throws Exception{        // 定义除法操作,如果有异常,则交给被调用处处理
                int temp = i / j ;       
                return temp ;
        }
};
public class ThrowsDemo01{
        public static void main(String args[]){
                Math m = new Math() ;               
                try{
                        System.out.println("除法操作:" + m.div(10,2)) ;
                }catch(Exception e){
                        e.printStackTrace() ;       
                }
        }
};

如果现在在主方法的声明上也使用了throws关键字,是不是就意味着主方法也可以不处理异常了?

3 个回复

倒序浏览
本帖最后由 牛杨 于 2012-8-10 01:17 编辑

如果现在在主方法的声明上也使用了throws关键字,是不是就意味着主方法也可以不处理异常了?
对的 只要是在main方法上声明使用throws ,那么你这个异常就抛给了jvm了 。
在运行这个程序的时候,jvm会调用自己默认的异常处理方式进行异常处理。

对于你这个除数为0的异常,其实也不用在函数上throws之也没问题。因为 对于运行时异常(除数为0的异常就是运行时异常)你可以 不用在函数上声明之 也可以,甚至于你不处理都可以,到最后丢给jvm进行处理
但是对于编译时期出现的异常。比如我们操作流时常见的IOException异常,这就是编译时异常。对于这种编译时异常 必须要处理之(处理方式可以抛出之,也可以捕获之)。
但是建议 最好还是用try—catch块捕获之,然后在catch块中转换成其他形式的运行时异常

评分

参与人数 1技术分 +1 收起 理由
杨志 + 1

查看全部评分

回复 使用道具 举报
本帖最后由 王健 于 2012-8-10 01:17 编辑

会,,,main方法就会默认抛给JVM执行的话,是会报错的,,
main方法是如何处理异常的。
A:在main里面编写代码进行处理
B:交给jvm自己进行处理。采用的是jvm的默认处理方式。
其实就是相当于调用了异常对象的printStackTrace()方法。
回复 使用道具 举报
java中的main函数抛出的异常由JVM(java虚拟机)处理。

在java程序中如果异常都向外抛,直到try{}catch处捕获;

楼主所说的是这种情况:
如果到了主方法(main方法)仍没有捕获,异常就由java虚拟机(java运行环境)处理
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马