捕获和抛出异常
Posted 超霸霸
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了捕获和抛出异常相关的知识,希望对你有一定的参考价值。
- 抛出异常
- 捕获异常
- 异常处理五个关键字:try、catch、finally、throw、throws
实例演练
我们都知道:除数不能为0,我们在IDEA中运行一下除数为0看是否报错
public class Outer {
public static void main(String[] args) {
int a=1;
int b=0;
System.out.println(a/b);
}
运行结果:
可以看出这是一个Exception并且报错
- 我们可以选择try——catch——finally结构避免报错
public class Outer {
public static void main(String[] args) {
int a=1;
int b=0;
try{//try监控区域
System.out.println(a/b);
}catch (ArithmeticException e){//catch 捕获异常
System.out.println("分母不能为0");
}finally {//处理善后工作
System.out.println("finally");
}
//可以不要finally
}
运行结果:
-
try为监控区域
-
catch捕获异常
-
finally处理善后工作
-
可以不要finally
- 假设要捕获多个异常:从小到大
public class Outer {
public static void main(String[] args) {
int a=1;
int b=0;
//假设要捕获多个异常:从小到大
try{//try监控区域
System.out.println(a/b);
}catch (Error e){//catch 捕获异常
System.out.println("Error");
}catch (Exception e){
System.out.println("Exception");
}catch (Throwable t){
System.out.println("Throwable");
} finally {//处理善后工作
System.out.println("finally");
}
}
-
捕获多个异常,使用多个catch
-
异常类型必须从小到大,否则报错
-
只会执行一个catch语句
- Ctrl + Alt + T 快捷方法
package demo02;
public class Outer {
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 {
}
}
-
Ctrl + Alt + T ->try/catch/finally
-
catch语句中执行的操作是打印错误的栈信息
-
打印错误的栈信息后还会继续执行后面的代码
- throw和throws
public class Outer {
public static void main(String[] args) {
new Outer().test(1,0);
System.out.println("Asda");
}
//假设这个方法中处理不了这个异常,方法上抛出异常
public void test(int a,int b) throws ArithmeticException{
if (b == 0) {
throw new ArithmeticException();//主动的抛出异常,一般在方法中使用
}
System.out.println(a/b);
}
}
- 主动的抛出异常,一般在方法中使用
- 假设这个方法中处理不了这个异常,方法上抛出异常
以上是关于捕获和抛出异常的主要内容,如果未能解决你的问题,请参考以下文章