不加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 execute
int i = 1 / 0;//除数不为0
System.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;
则输出