「这是我参与11月更文挑战的第12天,活动详情查看:2021最后一次更文挑战」
异常处理机制
编译时异常处理机制:
编译时异常是编译阶段就出错的,所以必须处理,否则代码根本无法通过。
编译时异常的处理形式有三种:
出现异常直接抛出去给调用者,调用者也继续跑出去。
出现异常自己捕获处理,不麻烦别人。
前两者的结合,出现异常直接抛出去给调用者,调用者捕获处理。
异常处理方式1 ---- throws
throws:用在方法上,可以将方法内部出现的异常抛出去给本方法的调用者处理。
这种方式并不好,发生异常的方法自己不处理异常,如果异常最终抛出去给虚拟机将引起程序死亡。
public class ExceptionDemo01 {
public static void main(String[] args) throws ParseException {
System.out.println("程序开始");
parseTime("2011-11-11 11:11:11");
System.out.println("程序结束");
}
public static void parseTime(String date) throws ParseException {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date d = sdf.parse(date);
System.out.println(d);
}
}
public class ExceptionDemo01 {
public static void main(String[] args) throws ParseException, FileNotFoundException {
System.out.println("程序开始");
parseTime("2011-11-11 11:11:11");
System.out.println("程序结束");
}
public static void parseTime(String date) throws ParseException, FileNotFoundException {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date d = sdf.parse(date);
System.out.println(d);
InputStream is = new FileInputStream("E:/dd.jpg");
}
}
出现一个异常就要抛出去,异常太多了。
public class ExceptionDemo01 {
public static void main(String[] args) throws Exception {
System.out.println("程序开始");
parseTime("2011-11-11 11:11:11");
System.out.println("程序结束");
}
public static void parseTime(String date) throws Exception {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date d = sdf.parse(date);
System.out.println(d);
InputStream is = new FileInputStream("E:/dd.jpg");
}
}
异常处理方式2 ---- try...catch...
监视捕获异常,用在方法内部,可以将方法内部出现的异常直接捕获处理。 这种方式还可以,发生异常的方法自己独立完成异常的处理,程序可以继续往下执行。
public class ExceptionDemo2 {
public static void main(String[] args) {
System.out.println("程序开始。。。");
parseTime("2011-11-11 11:11:11");
System.out.println("程序结束。。。");
}
public static void parseTime(String date) {
try {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date d = null;
d = sdf.parse(date);
System.out.println(d);
} catch (ParseException e) {
System.out.println("出现了异常");
e.printStackTrace();
}
try {
InputStream is = new FileInputStream("E:/dd.jpg");
} catch (FileNotFoundException e) {
System.out.println("出现了异常");
e.printStackTrace();
}
}
}
public class ExceptionDemo2 {
public static void main(String[] args) {
System.out.println("程序开始。。。");
parseTime("2011-11-11 11:11:11");
System.out.println("程序结束。。。");
}
public static void parseTime(String date) {
try {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date d = null;
d = sdf.parse(date);
System.out.println(d);
InputStream is = new FileInputStream("E:/dd.jpg");
} catch (ParseException e) {
System.out.println("出现了异常");
e.printStackTrace();
} catch (FileNotFoundException e) {
System.out.println("出现了异常");
e.printStackTrace();
}
}
}
public class ExceptionDemo2 {
public static void main(String[] args) {
System.out.println("程序开始。。。");
parseTime("2011-11-11 11:11:11");
System.out.println("程序结束。。。");
}
public static void parseTime(String date) {
try {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date d = null;
d = sdf.parse(date);
System.out.println(d);
InputStream is = new FileInputStream("E:/dd.jpg");
} catch (ParseException | FileNotFoundException e) {
System.out.println("出现了异常");
e.printStackTrace();
}
}
}
public class ExceptionDemo2 {
public static void main(String[] args) {
System.out.println("程序开始。。。");
parseTime("2011-11-11 11:11:11");
System.out.println("程序结束。。。");
}
public static void parseTime(String date) {
try {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date d = null;
d = sdf.parse(date);
System.out.println(d);
InputStream is = new FileInputStream("E:/dd.jpg");
} catch (Exception e) {
System.out.println("出现了异常");
e.printStackTrace();
}
}
}
异常处理方式3 ---- 前两者结合 方法直接将异常通过throws抛出去给调用者。 调用者收到异常后直接捕获处理。
public class ExceptionDemo3 {
public static void main(String[] args) {
System.out.println("程序开始。。。");
try {
parseTime("2011-11-11 11:11:11");
} catch (Exception e) {
e.printStackTrace();
}
System.out.println("程序结束。。。");
}
public static void parseTime(String date) throws Exception {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date d = null;
d = sdf.parse(date);
System.out.println(d);
InputStream is = new FileInputStream("E:/dd.jpg");
}
}
运行时异常的处理形式:
public class Test {
public static void main(String[] args) {
System.out.println("程序开始。。。");
// control + alt + t
try {
chu(10, 0);
} catch (Exception e) {
e.printStackTrace();
}
System.out.println("程序结束。。。");
}
public static void chu(int a, int b){
System.out.println(a);
System.out.println(b);
int c = a/b;
System.out.println(c);
}
}