不加try catch
package com.web;
public class Test25 {public static void main(String[] args) {int i = 1 / 0;System.out.println("i = " + i);System.out.println("aaaa");//直接不运行了}
}
加try catch
package com.web;public class Test25 {public static void main(String[] args) {try {int i = 1 / 0;System.out.println("i = " + i);} catch (Exception e) {e.printStackTrace();}System.out.println("aaaa");}
}
一个计算的话,如果除数为 0 ,则会报错,如果没有 try 的话,程序直接崩溃。用 try 的话,则可以让程序运行下去,并且输出为什么出错!
try catch 是捕捉try部分的异常,当你没有trycatch的时候,如果出现异常则程序报错,加上trycatch,出现异常程序正常运行,只是把错误信息存储到Exception里,所以catch是用来提取异常信息的,你可以在Catch部分加上一句System.out.println(e.ToString());,如果出现异常可以把异常打印出来
package com.web;import java.sql.Connection;
import java.sql.SQLException;public class Test25 {public static void main(String[] args) throws SQLException {try1();try2();}private static void try1() {try {System.out.println("try execute");//可执行 try executeint i = 1 / 0;//除数不为0System.out.println("i = " + i);//不可执行System.out.println("try again");//不可执行} catch (Exception e) {e.printStackTrace();}System.out.println("aaaa");//aaaa}private static void try2() throws SQLException {// 获得连接Connection conn = null;try {//#1 开始事务conn.setAutoCommit(false);//.... 加钱 ,减钱//#2 提交事务conn.commit();//如果上面操作出错,此处就不执行了,去执行try catch的内容了} catch (Exception e) {//#3 回滚事务conn.rollback();//commit()失败了,执行catch中的rollback()} finally{// 释放资源conn.close();}}
}
如果 int i = 1 / 1;
则输出