我是靠谱客的博主 激动蜜粉,这篇文章主要介绍2022Java学习笔记七十四(异常处理:编译时异常的处理机制、异常处理方式、运行时异常处理、自定义异常),现在分享给大家,希望可以做个参考。

2022Java学习笔记七十四(异常处理:编译时异常的处理机制、异常处理方式、运行时异常处理、自定义异常)

一、编译时异常的处理机制

编译时异常的处理有三种:
1、出现异常直接抛出去给调用者,调用者也继续抛出去
2、出现异常自己捕获处理,不麻烦别人
3、前两者的结合,出现异常直接抛出去给调用者,调用者捕获处理

二、异常处理方式一:throws
1、throws:用在方法上,可以将方法内部出现的异常抛出去给本方法的调用者处理
方式并不好,发送异常的方法自己不处理异常,如果异常最终抛出去给虚拟机将引起程序死亡
格式:

复制代码
1
2
方法 throws 异常1,异常2...{}

throws异常可以抛出很多个,所以不建议使用,建议将上面的异常改为下面的格式

复制代码
1
2
方法throws Exception{}

Exception为最高级的,所以定义一个就可以了

三、异常处理方式二:try-catch
1、监视捕获异常,用在方法内部,可以将方法内部出现的异常直接捕获处理
发送异常的方法自己独立完成异常的处理,程序可以继续往下执行

官方建议格式

复制代码
1
2
3
4
5
6
try{ }catch(Exception e){ e.printStackTrace(); // 打印异常信息 }

Exception可以捕获一切异常类型

四、异常处理方式3:前两者的集合【理论上最好的】
1、方法直接将异常通过throws抛出去给调用者
2、调用者收到异常后直接处理,而不是像方式一一样再抛出去
调用者接收异常使用try-catch处理

五、运行时异常处理
建议在最外层调用处集中捕获异常处理

示例代码

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
package com.zcl.d3_execption_handle; import java.util.Scanner; public class Demo { public static void main(String[] args) { Scanner s = new Scanner(System.in); while (true){ // 通过try来捕获异常 try { System.out.println("请输入一个合法的价格:"); String s1 = s.nextLine(); // 接收一整行输入内容 // 将输入的内容转换成double类型 Double aDouble = Double.valueOf(s1); // 判断价格是否大于0 if(aDouble > 0){ System.out.println("定价:"+aDouble); }else { System.out.println("请输入一个合法的价格"); } } catch (NumberFormatException e) { System.out.println("请输入没有毛病的价格"); } } } }

六、自定义异常

编译时异常
1、定义一个异常类继承Exception
2、重写构造器
3、在出现异常的地方用throw new 自定义对象抛出
作用:编译时异常是编译阶段就会报错,提醒更加强烈,一定需要处理
编译时异常示例代码

定义一个异常类

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
package com.zcl.d3_execption_handle; /* 自定义编译时异常 1、继承Exception 2、重写构造器 */ public class AgeIlleagalException extends Exception{ public AgeIlleagalException() { } public AgeIlleagalException(String message) { super(message); } }

调用编译异常示例代码

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
package com.zcl.d3_execption_handle; public class Test { public static void main(String[] args) { try { checkAge(-15); } catch (AgeIlleagalException e) { e.printStackTrace(); } } // 定义一个方法 public static void checkAge(int age) throws AgeIlleagalException { // 判断年龄异常 if(age<0||age>120){ // 抛出去一个异常给调用者 /* throw:在方法内部直接创建一个异常对象,并从此抛出异常 throws:用作方法中声明上的,抛处方法内部的异常 */ throw new AgeIlleagalException(age+" is illeagel!"); }else { System.out.println("年龄合法推荐商品"); } } }

异常输出结果
在这里插入图片描述

自定义运行时异常

1、定义一个异常类继承RuntimeException
2、重写构造器
3、在出现异常的地方用 throw new 自定义对象抛出
作用:提醒不强烈,编译阶段不报错,运行时才可能出现

异常类示例代码

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
package com.zcl.d3_execption_handle; /* 自定义编译时异常 1、继承Exception 2、重写构造器 */ public class AgeIlleagalRuntimeException extends RuntimeException{ public AgeIlleagalRuntimeException() { } public AgeIlleagalRuntimeException(String message) { super(message); } }

测试实例代码

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
package com.zcl.d3_execption_handle; public class Test { public static void main(String[] args) { checkAge(-15); } // 定义一个方法 public static void checkAge(int age){ // 判断年龄异常 if(age<0||age>120){ // 抛出去一个异常给调用者 /* throw:在方法内部直接创建一个异常对象,并从此抛出异常 throws:用作方法中声明上的,抛处方法内部的异常 */ // throw new AgeIlleagalException(age+" is illeagel!"); throw new AgeIlleagalRuntimeException(age+" is illeagel!"); }else { System.out.println("年龄合法推荐商品"); } } }

最后

以上就是激动蜜粉最近收集整理的关于2022Java学习笔记七十四(异常处理:编译时异常的处理机制、异常处理方式、运行时异常处理、自定义异常)的全部内容,更多相关2022Java学习笔记七十四(异常处理:编译时异常内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(91)

评论列表共有 0 条评论

立即
投稿
返回
顶部