黑马程序员技术交流社区
标题:
异常
[打印本页]
作者:
王广彬
时间:
2012-8-10 01:04
标题:
异常
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关键字,是不是就意味着主方法也可以不处理异常了?
作者:
牛杨
时间:
2012-8-10 01:14
本帖最后由 牛杨 于 2012-8-10 01:17 编辑
如果现在在主方法的声明上也使用了throws关键字,是不是就意味着主方法也可以不处理异常了?
对的 只要是在main方法上声明使用throws ,那么你这个异常就抛给了jvm了 。
在运行这个程序的时候,jvm会调用自己默认的异常处理方式进行异常处理。
对于你这个除数为0的异常,其实也不用在函数上throws之也没问题。因为
对于运行时异常(除数为0的异常就是运行时异常)你可以 不用在函数上声明之 也可以,甚至于你不处理都可以,到最后丢给jvm进行处理
。
但是对于编译时期出现的异常。比如我们操作流时常见的IOException异常,这就是编译时异常。
对于这种编译时异常 必须要处理之
(处理方式可以抛出之,也可以捕获之)。
但是
建议 最好还是用try—catch块捕获之,然后在catch块中转换成其他形式的运行时异常
!
作者:
王健
时间:
2012-8-10 01:15
本帖最后由 王健 于 2012-8-10 01:17 编辑
会,,,main方法就会默认抛给JVM执行的话,是会报错的,,
main方法是如何处理异常的。
A:在main里面编写代码进行处理
B:交给jvm自己进行处理。采用的是jvm的默认处理方式。
其实就是相当于调用了异常对象的printStackTrace()方法。
作者:
武鹏玉
时间:
2012-8-10 01:15
java中的main函数抛出的异常由JVM(java虚拟机)处理。
在java程序中如果异常都向外抛,直到try{}catch处捕获;
楼主所说的是这种情况:
如果到了主方法(main方法)仍没有捕获,异常就由java虚拟机(java运行环境)处理
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2