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 e)
17 {
18 System.out.println("exception");
19 }
中运行,你的程序没有异常,所以就没有进来。
被除数不能为0,这段代码是会报错的。不信可以试一下。
@释梦: 嗯,前面是我没有注意到i为0。
异常具有以下特点:
在应用程序遇到异常情况(如被零除情况或内存不足警告)时,就会产生异常。
在可能引发异常的语句周围使用 try 块。
try 块发生异常后,控制流会立即跳转到关联的异常处理程序(如果存在)。
如果给定异常没有异常处理程序,则程序将停止执行,并显示一条错误消息。
如果 catch 块定义了一个异常变量,则可以使用它来获取有关所发生异常的类型的更多信息。
可能导致异常的操作通过 try 关键字来执行。
异常处理程序是在异常发生时执行的代码块。在 C# 中,catch 关键字用于定义异常处理程序。
程序可以使用 throw 关键字显式地引发异常。
异常对象包含有关错误的详细信息,其中包括调用堆栈的状态以及有关错误的文本说明。
即使引发了异常,finally 块中的代码也会执行,从而使程序可以释放资源。
@释梦: 你可能是调试吧,如果不调试,直接运行会打印出来的。
@荒野的呼唤: 直接运行也不会打印的。因为run方法中跑的是另外一个线程