首页 新闻 会员 周边

异常处理问题:请问为什么没有打印exception?

0
悬赏园豆:5 [已解决问题] 解决于 2012-04-19 10:09
 1 public static void main(String[] args)
2 {
3
4 try
5 {
6 Thread thread = new Thread(){
7 @Override
8 public void run()
9 {
10 int i = 0;
11 System.out.println(2/i);
12 }
13 };
14 thread.start();
15 }
16 catch (Exception e)
17 {
18 System.out.println("exception");
19 }
20 }
问题补充:

为什么程序没有进catch打印“exception”,而是直接抛出异常,终止程序?

释梦的主页 释梦 | 菜鸟二级 | 园豆:215
提问于:2012-02-27 17:03
< >
分享
最佳答案
0

说明你这个程序没有出现异常,如果出现异常就会进入:

catch (Exception e)
17 {
18 System.out.println("exception");
19 }
中运行,你的程序没有异常,所以就没有进来。
收获园豆:5
悟行 | 专家六级 |园豆:12559 | 2012-02-27 17:37

被除数不能为0,这段代码是会报错的。不信可以试一下。

释梦 | 园豆:215 (菜鸟二级) | 2012-02-28 20:42

@释梦: 嗯,前面是我没有注意到i为0。

异常具有以下特点:

  • 在应用程序遇到异常情况(如被零除情况或内存不足警告)时,就会产生异常。

  • 在可能引发异常的语句周围使用 try 块。

  • try 块发生异常后,控制流会立即跳转到关联的异常处理程序(如果存在)。

  • 如果给定异常没有异常处理程序,则程序将停止执行,并显示一条错误消息。

  • 如果 catch 块定义了一个异常变量,则可以使用它来获取有关所发生异常的类型的更多信息。

  • 可能导致异常的操作通过 try 关键字来执行。

  • 异常处理程序是在异常发生时执行的代码块。在 C# 中,catch 关键字用于定义异常处理程序。

  • 程序可以使用 throw 关键字显式地引发异常。

  • 异常对象包含有关错误的详细信息,其中包括调用堆栈的状态以及有关错误的文本说明。

  • 即使引发了异常,finally 块中的代码也会执行,从而使程序可以释放资源。

悟行 | 园豆:12559 (专家六级) | 2012-02-28 21:26

@释梦: 你可能是调试吧,如果不调试,直接运行会打印出来的。

悟行 | 园豆:12559 (专家六级) | 2012-02-28 21:30

@荒野的呼唤: 直接运行也不会打印的。因为run方法中跑的是另外一个线程

释梦 | 园豆:215 (菜鸟二级) | 2012-03-05 18:53
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册