黑马程序员技术交流社区
标题:
异常处理:异常处理模型中,没有catch也可以编译成功,为什么啊
[打印本页]
作者:
田晓莉
时间:
2015-3-18 10:33
标题:
异常处理:异常处理模型中,没有catch也可以编译成功,为什么啊
异常部分里面,try{}部分写有可能出现问题的代码,catch是用于处理异常。如果检测到并且抛出异常,但是没有catch,这样被抛出的异常不就是没有被处理,这种情况为什么还可以编译成功啊?
作者:
huhanghao
时间:
2015-3-18 12:19
在异常处理中,有三种类型的异常,第一种是error,第二种是exception,第三种是runtimeexception。感觉楼主应该问的是第二种。对于这种异常的处理。分为两种,一种是不用抛出,在内部,try catch自己搞定。第二种是抛出去,让别人去try catch。既然楼主已经选择抛出,那么自然就能编译过。但是对于第三种异常,只需要抛出就好了,不用catch也没关系
作者:
One_M
时间:
2015-3-18 12:44
在JAVA 中异常的处理有两种 抛出和处理,编译过程中检测到有抛出就能编译通过检测语句是否正确,而try catch 是在运行中处理的,所以如果有抛出了程序中不写catch也是可以编译通过的。 而 RuntimeException 是特殊的一种,这类异常是即使不写抛出语句也能正常通过(可省略抛出语句)
作者:
田晓莉
时间:
2015-3-18 13:33
One_M 发表于 2015-3-18 12:44
在JAVA 中异常的处理有两种 抛出和处理,编译过程中检测到有抛出就能编译通过检测语句是否正确,而try catc ...
懂了~讲的很清晰,谢谢
作者:
有丶时候
时间:
2015-3-18 17:30
我是来看大神们的回复的,受教了
作者:
混乱的世界
时间:
2015-3-19 00:07
本帖最后由 混乱的世界 于 2015-3-19 00:17 编辑
我是这样理解的,异常就两种,一种编译异常,一种是运行异常,编译异常就是编译就出问题的,运行异常是编译没错,运行就出异常。
最好是把你的代码贴出来看看
class Div
{
int div(int a,int b)
{
return a/b;
}
}
public class ExceptionDemo {
public static void main(String[] args)
{
Div d=new Div();
int b;
try
{
b = d.div(5, 0);
System.out.println(b);
}
//catch (Exception e)
{
//e.printStackTrace();
}
System.out.println("over!!");
}
}只有Try{}会报错的
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2