
Java基础之异常
发布日期:2021-05-06 23:31:46
浏览次数:17
分类:精选文章
本文共 2955 字,大约阅读时间需要 9 分钟。
简介
java异常是java提供的一种识别、响应错误的一致性机制。异常机制可以保证正常业务代码和异常处理代码分离,保证程序的健壮性。在有效使用异常的情况下,异常能清楚的反应3W:异常类型回答什么被抛出,异常堆栈跟踪回答在哪抛出,异常信息回答为什么被抛出。
关键字
1.try:用于监听,try语句块内的代码出现异常时,异常就会被抛出。
2.catch:用于捕获异常,捕获try抛出的异常 3.finally:finally语句块总是会被执行,主要用于回收try内打开的数据库连接、网络连接、磁盘文件等。当finally块执行完后,才会执行try catch中的return、throw语句。若finally块中有return、throw,直接stop。 4.throw:用于抛出异常。 5.throws:用于签名方法中,声明该方法可能会抛出异常try、catch基本用法
public class Hello { public static void main(String []args){ try { int i = 10/0; System.out.println("i="+i);//这行不会执行 }catch (ArithmeticException e){ System.out.println("捕获到了异常:"+e.getMessage()); System.out.println("e.toString():"+e.toString()); e.printStackTrace(); } }}
10/0就会抛出异常,被catch捕获。此外try语句块发生异常,后面的内容就不会在执行了,所以System.out.println(“i=”+i);并没有执行。
finally基本用法
还是上面的代码,加上finally语句块,最后finally语句块会被执行。
public class Hello { public static void main(String []args){ try { int i = 10/0; System.out.println("i="+i); }catch (ArithmeticException e){ System.out.println("捕获到了异常:"+e.getMessage()); System.out.println("e.toString():"+e.toString()); e.printStackTrace(); }finally { System.out.println("执行了finally语句块"); } }}
throw和throws用法
throw用于抛出异常,throws用于声明抛出的异常
class MyException extends Exception{ public MyException() { } public MyException(String message) { super(message); }}public class Hello { public static void main(String []args){ try { test(); }catch (MyException e){ System.out.println("抛出MyException"); e.printStackTrace(); } } public static void test() throws MyException{ try { int i = 10/0; System.out.println("i="+i); }catch (ArithmeticException e){ throw new MyException("我自己声明的Exception"); } }}
运行结果如下:
抛出MyExceptioncom.example.husky.mergesort.IO.MyException: 我自己声明的Exception at com.example.husky.mergesort.IO.Hello.test(Hello.java:39) at com.example.husky.mergesort.IO.Hello.main(Hello.java:27)
test方法的try语句块产生ArithmeticException,并在catch中捕获。接着抛出MyException异常,Main方法对其捕获。
Java异常框架
框架角色拆解分析:
Throwable结构类型
Throwable的结构可分为3种类型:被检查的异常CheckedException、运行时异常RuntimeException和错误Error
RuntimeException定义
RuntimeException及子类都被称为运行时异常。
java编译器不会去检查它,当此异常发生时若既没有抛出也没有捕获,还是会编译通过。该异常,可通过修改代码避免。CheckedException定义
Exception类及其去除RuntimeException的子类,都属于被检查异常。
java编译器会检查它,要么捕获,要么抛出,否则不能通过编译。Error定义
Error类及其子类。
编译器不会对Error进行检查,且程序本身无法修复错误。发表评论
最新留言
能坚持,总会有不一样的收获!
[***.219.124.196]2025年03月21日 06时24分41秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
[Python学习笔记]组织文件
2021-05-09
基于Redo Log和Undo Log的MySQL崩溃恢复流程
2021-05-09
从RocketMQ的Broker源码层面验证一下这两个点
2021-05-09
如何正确的在项目中接入微信JS-SDK
2021-05-09
纵览全局的框框——智慧搜索
2021-05-09
快服务流量之争:如何在快服务中占领一席之地
2021-05-09
【活动】直播揭秘<如何从0开发HarmonyOS硬件>
2021-05-09
Unity平台 | 快速集成华为性能管理服务
2021-05-09
对模拟器虚假设备识别能力提升15%!每日清理大师App集成系统完整性检测
2021-05-09
使用Power BI构建数据仓库与BI方案
2021-05-09
Django认证系统并不鸡肋反而很重要
2021-05-09
快用Django REST framework写写API吧
2021-05-09
tep用户手册帮你从unittest过渡到pytest
2021-05-09
12张图打开JMeter体系结构全局视角
2021-05-09
Spring Boot 2.x基础教程:构建RESTful API与单元测试
2021-05-09
[UWP 自定义控件]了解模板化控件(1):基础知识
2021-05-09
UWP 自定义控件:了解模板化控件 系列文章
2021-05-09
[UWP]从头开始创建并发布一个番茄钟
2021-05-09
在 Azure 上执行一些简单的 python 工作
2021-05-09
WinUI 3 Preview 3 发布了,再一次试试它的性能
2021-05-09