/**
* @param args
* @throws IOException
* 小异常在前,大异常在后,同级的顺序随便
*/
public static void main(String[] args) {
// 空指针异常,并没有new Student的,不是null类型的,并不能调用其中的方法
try {
String s = null;
System.out.println(s.length());
Student stu = null;
System.out.println(stu.getAge());
// 数组越界
int[] a = new int[2];
System.out.println(a[20]);
// 编译时异常
File file = new File("sss");
file.createNewFile();
} catch (NullPointerException e) {
System.out.println("空指针异常");
} catch (IOException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
System.out.println("程序结束");
}
Finally关键字
/**
* @param args
* finally里面的代码无论有没有异常都要执行
*/
public static void main(String[] args) {
// try {
// System.out.println(3/0);
// //System.out.println(3/1);
// } catch (Exception e) {
// System.out.println("异常");
// }finally{
// System.out.println("异常处理");
// }
System.out.println(getNum());//输出为 3 5 3
}
public static int getNum(){
int num = 1;
try {
num = 3/num;
num = 3;
System.out.println(num);
return num;
} catch (Exception e) {
num = 4;
System.out.println(num);
return num;
}finally{
num = 5;
System.out.println(num);
}
}
java中的自定义异常
//自定义一个异常
public class MyException extends Exception{
public MyException(String message){
super(message);
}
}
//测试自定义异常
public class TestE {
/**
* @param args
*/
public static void main(String[] args) {
try {
int a = 10;
throw new MyException("不能为10");
} catch (Exception e) {
e.printStackTrace();
}
}
}