Java异常处理机制
来自CloudWiki
什么是异常
异常是程序中的一些错误,但并不是所有的错误都是异常,并且错误有时候是可以避免的。
比如说,你的代码少了一个分号,那么只说明是语法错误,不算异常;如果你写程序时用0做了除数,如System.out.println(11/0),或者是读取一个并不存在的文件,导致程序偏离了正常的运行轨迹、执行不下去了,这就叫异常。
异常发生的原因有很多,通常包含以下几大类:
用户输入了非法数据。 要打开的文件不存在。 网络通信时连接中断,或者JVM内存溢出。
这些异常有的是因为用户错误引起,有的是程序错误引起的,还有其它一些是因为物理错误引起的。
异常的处理
异常怎么来处理呢 ?非常简单,可以将可能发生异常的语句放到try-catch语句当中来处理。
try { // 位置1 }catch(ExceptionName e1) { //Catch 块 }
把你想写的代码放到位置1当中,如果有异常发生,程序就会及时捕捉到。
如: public class MainClass { public static void main(String[] args) throws IOException {
int i = 10;
int j = 0; try{ int temp = i/j; //此处会产生异常 System.out.println("计算结果:"+temp); }catch(Exception e){ System.out.println("出现异常:"+e); //打印异常信息 //e.printStackTrace(); //打印完整的异常信息 } System.out.println("计算结束");
} }
我们在上述程序编写时,误将0作为了除数。
在运行程序时,上述的try-catch异常处理语句就会捕捉到这个异常,并把它打印出来。
出现异常:java.lang.ArithmeticException: / by zero
再如:文件的读取
public class MainClass { public static void main(String[] args) throws IOException { //把内容显示在屏幕上 try(FileReader fr= new FileReader("reader2.txt")){ char[] c=new char[20]; int hasRead=0; while((hasRead=fr.read(c))!=-1) { System.out.print(new String(c,0,hasRead)); } }catch (Exception e) { System.out.println("出现异常:"+e); //e.printStackTrace(); } } }
我们在上述程序编写时,误读取了