异常02:捕获和抛出异常
//try 一定要有,finally可以不要
//如果 try 里面出现了异常 ,catch 就会捕获异常
//catch 捕获异常,有点像if,else if ,层层递进,得把最大范围写在下面,不然会报错 !!
//假设要捕获多个异常,catch(范围),范围要从小到大
//主动在方法里抛出的是 throw ,主动在方法上抛出的是 throws
//抛出异常 try -- catch ,好处是代码错误直接就停止了, try -- catch 监控的代码如果遇到错误,抛出异常,程序正常的往下执行

异常处理机制
- 抛出异常
- 捕获异常
- 异常处理五个关键字
- try、catch、finally、throw、throws
- 1.try -- 监控区域
-
- catch -- 用来捕获异常
-
- finally -- 处理善后工作,最后执不执行都会走的
-
- throw -- 用于抛出异常
-
- throws -- 用于抛出异常
- try、catch、finally、throw、throws
catch 的范围:

抛出异常快捷键(try -- catch -- finally):
Ctrl+Alt+T
代码示例:
- 正常来说,程序执行的输出结果如下所示:
进程已结束,退出代码0
Demo01.java:
package com.exception;
public class Demo01 {
public static void main(String[] args) {
int a = 1;
int b = 0;
//假设要捕获多个异常要从小变大
try { //监控区域
System.out.println(a / b);
} catch (Error e) { //catch(想要捕获的异常类型!)捕获异常 //Error错误
System.out.println("Error");
} catch (Exception e) { //Exception异常
System.out.println("exception");
} catch (Throwable e) { //Throwable 可抛出
System.out.println("Throwable");
}finally { //处理善后工作
System.out.println("finally");
}
//finally 可以不要finally , 假设 IO ,资源,需要关闭可以放到finally中
}
public void a() {
b();
}
private void b() {
a();
}
}
输出:
exception
finally
进程已结束,退出代码 0
Demo02.java:
package com.exception;
public class Demo02 {
public static void main(String[] args) {
int a = 1;
int b = 0;
//抛出异常快捷键 : 光标在需要监控的代码 上Ctrl+Alt+T
try {
System.out.println(a / b);
} catch (Exception e) {
e.printStackTrace();
} finally {
}
}
}
输出:
java.lang.ArithmeticException: / by zero
at com.exception.Demo02.main(Demo02.java:11)
进程已结束,退出代码 0
Demo03.java:
package com.exception;
public class Demo03 {
public static void main(String[] args) {
//利用try... catch 抛出,程序继续执行
try {
new Demo03().test(1, 0);
} catch (ArithmeticException e) {
e.printStackTrace();
}
System.out.println(" 利用try..catch 抛出,程序继续执行 ");
}
//throws假设这个方法处理不了,在方法上抛出异常
public void test(int a, int b) throws ArithmeticException {
if (b == 0) { //主动抛出异常 throw throws
throw new ArithmeticException(); //throw主动抛出异常,一般在方法中使用
}
System.out.println(a / b);
}
}
输出:
java.lang.ArithmeticException
at com.exception.Demo03.test(Demo03.java:18)
at com.exception.Demo03.main(Demo03.java:7)
利用try..catch 抛出,程序继续执行
进程已结束,退出代码 0

浙公网安备 33010602011771号