异常
了解异常:
JVM的默认处理异常方案:
异常处理:
try…catch…
格式:
在catch块中处理异常
示例:
不做任何异常处理时:
public class Test {
/**
* @param args
*/
public static void main(String[] args) {
int a[]={1,2,3};
System.out.println(a[3]);
// try {
// System.out.println(a[3]);
// } catch (Exception e) {
// System.err.println("出现错误,数组越界");
// e.printStackTrace();
// }
System.out.println("结束");
}
}
结果:
可以看到结束语句不输出。
对程序进行异常处理:
public class Test {
/**
* @param args
*/
public static void main(String[] args) {
int a[]={1,2,3};
// System.out.println(a[3]);
try {
System.out.println(a[3]);
} catch (Exception e) {
System.err.println("出现错误,数组越界");
e.printStackTrace();
}
System.out.println("结束");
}
}
可以看到结束语句输出,并且将异常的提示信息输出在控制台上。
常见的异常类型:
加入finally关键字:
加入finally时无论程序是否出现错误都会执行
示例:
public class Test {
/**
* @param args
*/
public static void main(String[] args) {
int a[]={1,2,3};
try {
// System.out.println(a[3]);
System.out.println(a[2]);
} catch (Exception e) {
System.err.println("出现错误,数组越界");
} finally{
System.out.println("结束");
}
}
}
出现错误时:
public class Test {
/**
* @param args
*/
public static void main(String[] args) {
int a[]={1,2,3};
try {
System.out.println(a[3]);
} catch (Exception e) {
System.err.println("出现错误,数组越界");
} finally{
System.out.println("结束");
}
}
}
finally失效的情况;
如果在catch中出现System.exit(0);
即虚拟机已经退出,将不进行finally。