异常是程序在执行过程中所产生的问题,导致异常产生的原因包括:用户输入了无效的数据、找不到一个需要打开的文件、在通讯过程中网络连接断开或者JVM发生了内存溢出等等。
异常是被一个方法抛出的对象。
异常分类:
检查异常:检查异常通常是用户错误或者不能被程序员所预见的问题。运行时异常:是一个程序在运行过程中可能发生的、可以被程序员避免的程序类型。错误:实际上,错误根本不是异常,但却是用户或程序员所无法控制的问题。错误通常在设计好编写Java应用程序时被忽略。对异常处理的三种选择:
(1).捕获这个异常,不让它沿着调用栈继续向下抛出;(2).捕获这个异常,并继续向下抛出;(3).不捕获这个异常,从而导致方法从调用栈中被弹出,异常对象继续抛给调用栈下面的main()方法。只有Throwable类型的对象能够被JVM抛出,它的子类Exception是所有异常的父类,RuntimeException是运行时异常,一个异常是Exception的子类但不是RuntimeException的子类,这个异常是检查异常,子类Error是所有错误的父类。
捕获异常使用try/catch代码块,例:
try { while (rs.next()) { is = true; // 打印信息 print(rs); } if (!is) { System.out.println("你还没有宠物哦"); } } catch (SQLException e) { e.printStackTrace(); }如果try中没有异常,catch块会被忽略;如果try中有异常,try中抛出异常后面的代码不会执行,会跳到捕获异常的地方。
捕获异常时先捕获特殊异常后捕获普通异常。
throws关键字声明异常,throw抛出异常。
finally关键字,不管异常是否发生,finally关键字总会执行。
try { while (rs.next()) { is = true; // 打印信息 print(rs); } if (!is) { System.out.println("你还没有宠物哦"); } } catch (SQLException e) { e.printStackTrace(); } finally { // 释放资源 JdbcUtil.close(); }