程序运行过程中发生的不正常行为叫做异常
栈溢出
内存溢出
空指针异常
数学运算异常
类型转换异常 classCastException
数组下标越界异常
数字格式化异常 NumberFormatException
int a = Integer.parseInt("s");
是指代码在编译期间就必须处理的异常,否则代码不能编译通过
IOException
ClassNotFoundException
FileNotFoundException
SQLException
throw :手动生成异常对象的关键字,位置在方法体中, 用在方法体内,抛出具体的异常,由方法体处理。
throws:方法抛出的一个异常,可以声明多个,用逗号隔开,由方法调用方处理
当需要抛出多个异常,子类异常在前,父类异常在后
try…finally 等于没有抛出异常
try { int a = Integer.parseInt(""); }catch (Exception e){ e.printStackTrace(); }finally { System.out.println("打印finally"); } System.out.println("打印最后");
try { int a = Integer.parseInt(""); }finally { System.out.println("打印finally"); } System.out.println("打印最后");
try { int a = Integer.parseInt(""); return; }catch (Exception e){ e.printStackTrace(); System.out.println("异常"); return; }finally { System.out.println("打印finally"); }
try { int a = Integer.parseInt("3"); System.out.println("正常"); return; }catch (Exception e){ e.printStackTrace(); System.out.println("异常"); return; }finally { System.out.println("打印finally"); }
// 捕获异常后,程序会继续执行,aaa不会被执行 try { Integer a = null; a.equals("1"); System.out.println("aaa"); }catch (Exception e){ // 捕获异常 e.printStackTrace(); } System.out.println("程序继续执行"); java.lang.NullPointerException at com.zs.backend.test.Out.main(Out.java:8) 程序继续执行 try { Integer a = null; a.equals("1"); System.out.println("aaa"); }catch (Exception e){ // 捕获异常 //e.printStackTrace(); } System.out.println("程序继续执行"); 程序继续执行
public class Out { public static void main(String[] args) { int a = 10; if(a > 1){ throw new CC("异常"); } } } class CC extends RuntimeException{ public CC(String msg){ super(msg); } } > 1){ throw new CC("异常"); } } } class CC extends RuntimeException{ public CC(String msg){ super(msg); } }