- 抛出异常
- 捕获异常
- 处理异常的五个关键字:
- try、catch、finally、throw、throws
package com.exception;
public class Test1 {
public static void main(String[] args) {
int a = 10;
int b = 0;
try{ // 监控区域
System.out.println(a/b);
}catch (Throwable e){ // catch(想要捕获的异常类型)是捕获异常 Throwable:
System.out.println("小翟的程序出现异常啦!别灰心每一次的异常只会让你变得更强!");
}
finally { // 处理善后工作
System.out.println("finally:不管出不出异常都会执行!");
}
try {
System.out.println(a/b);
} catch (Exception e) {
System.exit(1); // 结束程序
}
}
}
输出:
小翟的程序出现异常啦!别灰心每一次的异常只会让你变得更强!
finally:不管出不出异常都会执行!
package com.exception;
public class Test2 {
public static void main(String[] args) throws Exception { //throws使用在方法上,抛出异常
new Test2().add(1,0);
}
public int add(int a,int b){
if(b==0){
throw new ArithmeticException(); // throw用在方法中,主动抛出异常
}
return a/b;
}
}
输出:
Exception in thread "main" java.lang.ArithmeticException
at com.exception.Test2.add(Test2.java:10)
at com.exception.Test2.main(Test2.java:5)
try:监控要出错的代码
catch():参数:要抛出异常的类型,进行抛出异常
finally:始终的,不管上面执行的怎么样,finally中的代码必须执行。
throw:用在方法中主动抛出异常。
throws:用在方法上抛出异常
- 使用Java内置的异常类是可以描述在编程时出现大部分异常情况;除此之外,用户还可以自定义异常。用户自定义异常类,只需要继承Exception即可。
1、创建自定义异常类.
2、在方法中通过throw关键字抛出异常对象.
3、如果在当前抛出异常的方法中处理异常,可以使用 try-catch 语句捕获并处理;否则在方法的声明处通过throws关键字指明要抛出给方法调用者的异常,继续进行下一步操作.
4、再出现异常方法的调用这中捕获并处理异常。
package com.exception;
// 自定义异常类:需要继承 Exception
public class MyException extends Exception {
// 定义变量,用于传数字
private final int exe;
// 使用有参构造进行传值
public MyException(int exe) {
this.exe = exe;
}
// 使用 toString方法进行打印输出
@Override
public String toString() {
return "MyException{" + "您的分数为:" + exe + '}';
}
}
package com.exception;
// 测试类
public class TestException {
public static void exception(int a) throws MyException {
// 判断传入的参数是否小于60
if (a<60){ // 如果小于60
System.out.println("你传递的分数为:"+a); // 则输出当前的成绩
throw new MyException(a); // 主动抛出异常
}
System.out.println("您的分数合格,请进入下一轮考试!");
}
public static void main(String[] args) {
try {
exception(59);
} catch (MyException e) {
System.out.println("您的分数不合格!即将取消考试资格:"+e);
System.exit(0); // 结束程序
}
}
}
输出1:
你传递的分数为:59
您的分数不合格!即将取消考试资格:MyException{您的分数为:59}
输出2:
您的分数合格,请进入下一轮考试!
- 处理运行时异常时,采取逻辑去合理规避同时辅助 try-catch 来处理
- 在多重 catch 块后面,可以加一个 catch (Exception) 来处理可能会被遗漏的异常
- 对于不确定的代码,也可以加上 try-catch ,处理潜在的异常
- 尽量去处理异常,切记只是简单的调用 prinkStackTrace()去打印输出
- 具体如何处理异常,要根据不同的业务需求和异常类型去决定
- 尽量添加 finally 语句块去释放占用资源