1. 区别:
throw exception直接终止方法,或者退出循环。
try catch还要继续处理方法余下的逻辑,或者不结束循环。
try catch 不中断,throw exception中断
2.代码
(1)try catch 不中断
public class ExceptionDemo {
public static void main(String[] args) {
print();
}
private static void print(){
int index = 0;
while (true){
try {
Thread.sleep(200);
++index;
if (index == 30 || index == 50){
throw new Exception();
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.out.println("Exception");
}
System.out.println("index = "+index);
}
}
}
运行结果:
index = 24
index = 25
index = 26
index = 27
index = 28
index = 29
Exception
index = 30
java.lang.Exception
at com.exception.ExceptionDemo.print(ExceptionDemo.java:19)
at com.exception.ExceptionDemo.main(ExceptionDemo.java:8)
index = 31
...
index = 48
index = 49
java.lang.Exception
at com.exception.ExceptionDemo.print(ExceptionDemo.java:19)Exception
at com.exception.ExceptionDemo.main(ExceptionDemo.java:8)
index = 50
index = 51
public class ExceptionDemo {
public static void main(String[] args) {
try {
print();
} catch (IOException e) {
e.printStackTrace();
System.out.println("IOException");
}
}
private static void print() throws IOException{
int index = 0;
while (true){
++index;
if (index == 30 || index == 50){
throw new IOException();
}
try {
Thread.sleep(300);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("index = "+index);
}
}
}
index = 1
index = 2
index = 3
index = 4
index = 5
index = 6
index = 7
index = 8
...
index = 28
index = 29
java.io.IOException
IOException
at com.exception.ExceptionDemo.print(ExceptionDemo.java:22)
at com.exception.ExceptionDemo.main(ExceptionDemo.java:10)