class Test{
public static void main(String args []){
System.out.println(1);
int i = 1 / 0;
System.out.println(2);
}
}
用java编译这个Test类没有出错,但是用javac执行的时候在1 / 0报错。
这个是uncheckException
这个是RuntimeException运行时异常
还有就是编译时异常
TestCheck.java
class TestCheck{
public static void main(String args []){
Thread.sleep(1000);
}
}

下面是对这种异常 的处理方法
try{
}
catch{
}
如果 try执行的过程中出现异常,那么就会跳到catch执行
Test.java
class Test{
public static void main(String args []){
System.out.println(1);
//uncheck exception
try{
System.out.println(2);
int i = 1 / 0;
System.out.println(3);
}
catch(Exception e){
e.printStackTrace();
System.out.println(4);
}
System.out.println(5);
}
}

同样的加上try{}catch{}后。编译异常就会可以编译通过
还有就是
finally{
//这个不管是否有异常,都会执行finally里的
}
Test.java
class Test{
public static void main(String args []){
System.out.println(1);
//uncheck exception
try{
System.out.println(2);
int i = 1 / 0;
System.out.println(3);
}
catch(Exception e){
e.printStackTrace();
System.out.println(4);
}
finally{
System.out.println(6);
}
System.out.println(5);
}
}

执行了输出6
Test.java
class Test{
public static void main(String args []){
System.out.println(1);
//uncheck exception
try{
System.out.println(2);
int i = 1 / 1;
System.out.println(3);
}
catch(Exception e){
e.printStackTrace();
System.out.println(4);
}
finally{
System.out.println(6);
}
System.out.println(5);
}
}

同样 执行了输出6.
finally{
}
多用于IO流关闭文件时使用,或者关闭数据库或者关闭socket