文章36 | 阅读 16074 | 点赞0
异常(Exception类):就是程序出现了不正常的情况。
下面举例:
【ArithmeticException】:当出现异常的运算条件(例如一个整数“除以零”)时,抛出此异常(此类的一个实例)。
常见的异常有:
异常的体系的介绍:
Exception的分类:
异常的两种处理方式:
try {
//尝试对此部分代码捕获异常
} catch (Exception e) {
//捕获异常后的处理逻辑
//e.printStackTrace(); //默认处理方式打印异常信息
} finally {
//无论是否捕获异常,都会执行
}
//以IOException为例,只有使用BufferedReader就会出现找不到文件IO异常,需要进行处理
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new FileReader("name.txt"));
}
处理方案:
代码:
package Java_study;
/**
*
* @author 只是甲
* @date 2021-07-15
* @remark JVM默认处理异常方式
*
*/
public class exception1 {
public static void main(String[] args) {
System.out.println("程序开始执行");
method();
System.out.println("程序执行结束");
}
public static void method() {
int a = 10;
int b = 0;
System.out.println(a / b);
}
}
测试记录:
Exception in thread "main" 程序开始执行
java.lang.ArithmeticException: / by zero
at Java_study.exception1.method(exception1.java:21)
at Java_study.exception1.main(exception1.java:14)
Java中的异常被分为两大类:编译时异常和运行时异常。
执行流程:
try catch 获异常后, 如何处理?
try…catch处理方式&JVM的默认处理方式有什么不同?
代码:
package Java_study;
/**
*
* @author 只是甲
* @date 2021-07-15
* @remark try..catch处理异常
*
*/
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class exception2 {
public static void main(String[] args) {
System.out.println("-----程序开始执行------");
System.out.println("method: 编译时异常");
method();
System.out.println("method2: 运行时异常");
method2();
System.out.println("-----程序结束执行------");
}
//编译时异常ParseException
public static void method() {
String s = "abcd";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date d = null;
try {
d = sdf.parse(s);
} catch (ParseException e) {
System.out.println("日期格式不合法,请重新输入");
}
System.out.println(d);
}
//运行时异常
public static void method2() {
try {
int a = 10;
int b = 0;
System.out.println(a / b);
} catch (ArithmeticException e) {
System.out.println("除数不能为0");
}
}
}
测试记录:
-----程序开始执行------
method: 编译时异常
日期格式不合法,请重新输入
null
method2: 运行时异常
除数不能为0
-----程序结束执行------
为什么要有throws处理方式?
throws使用的格式
//实例
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new FileReader("name.txt"));
}
throws使用的注意事项?
代码:
package Java_study;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
/**
*
* @author 只是甲
* @date 2021-07-15
* @remark throws处理异常
*
*/
public class exception3 {
public static void main(String[] args) {
System.out.println("程序开始执行");
try {
method();
} catch (ParseException e) {
e.printStackTrace();
}
method2();
System.out.println("程序结束执行");
}
//编译时异常 注意导包 import java.text.ParseException;
public static void method() throws ParseException {
String s = "abc";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-mm-dd");
Date d = sdf.parse(s);
System.out.println(d);
}
//运行时异常
public static void method2() throws ArithmeticException{
int a = 10;
int b = 0;
System.out.println(a / b);
}
}
测试记录:
程序开始执行
java.text.ParseException: Unparseable date: "abc"
at java.text.DateFormat.parse(Unknown Source)
at Java_study.exception3.method(exception3.java:32)
at Java_study.exception3.main(exception3.java:19)
Exception in thread "main" java.lang.ArithmeticException: / by zero
at Java_study.exception3.method2(exception3.java:40)
at Java_study.exception3.main(exception3.java:24)
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://blog.csdn.net/u010520724/article/details/120312896
内容来源于网络,如有侵权,请联系作者删除!