网站首页 > java教程 正文
尽管人人都希望所处理的事情能顺利执行,所操作的机器能正常运转,但在现实生活中总会遇到各种异常情况。在工作中也会频频出现异常情况。异常情况会改变正常的执行流程,导致恶劣的后果。为了减少损失,应该事先充分预计所有可能出现的异常情况,然后采取措施。
Java语言提供了一套完善的异常处理机制,正确使用这套机制,有助于提高程序的健壮性。今天就来聊一聊有关Java当中的这套异常处理机制。
什么异常?
简单地说,异常就是程序在执行过程中遇到的不正常的情况,该情况导致了程序的强制终止,然后将该不正常的情况返回,由程序的开发者进行处理。
异常的分类
想要搞清楚异常的分类,先来看一下异常的继承关系,这里一目了然地介绍了Java当中对于异常的类型介绍。
Throwable类型:它是Java语言中所有错误和异常的超类
Error类型:
这里边有一个词叫做“合理的应用程序不应该视图捕获的严重问题”,在理解上可能不是特别友好。举个例子就明白了。比如死循环就是一种错误的情况,在语法上循环是很合理的,这种情况JVM不会去捕捉它的异常情况,但是死循环又确实是一种可能导致程序出现问题的一种情形。
Exception类:
Exception是对程序异常情况封装的类型,该类型可以分为两种:
①、RuntimeException 运行期异常。顾名思义,这类异常在程序编译期间不会被捕获,但是在程序执行期间才会出现的异常情况。这类异常通常是由于一些逻辑上的错误导致的,所以这类异常是可以避免的。常见的运行期异常包括:NullPointerException(空指针异常)、ClassCastException(类型转换异常)、IndexOutOfBoundsException(索引越界异常)等。
②、非RuntimeException ,也叫做编译期异常。它是在程序变异期间就会产生的异常,这种异常必须处理,否则编译不通过。常见的编译期异常包括:IOException(流传输异常)、SQLException(数据库操作异常)等。
异常的处理
在Java中处理异常的方式大概可以分为两种,分别是捕获并处理异常、抛弃异常
①、捕获并处理异常。
通过try...catch...finally语句块进行捕获并处理,具体语法如下:
try{
语句体;
}catch(异常类型1 变量名1){
处理异常;
}catch(异常类型2 变量名2){
处理异常;
}.....
finally{
代码块;
}
由try模块包裹一段可能会出现异常的代码段,如果出现了异常,则会将该异常类型进行捕获,然后将这个异常类型与下边的catch模块一一比对,如果比对成功,则执行相应catch模块中的内容,反之如果比对不成功,则程序终止。
finally块中的内容则是不管程序是否出现异常,里边的内容都一定会被执行。一般会将释放资源的代码段放在其中。
②、抛弃异常。
抛弃异常是指方法中出现异常时暂时不想处理或者不能处理时则将异常暂时抛弃以保证程序暂时能够正常的运行。
通过throws关键字来抛弃异常,可以同时抛弃掉多个异常,中间使用逗号隔开,throws要写在方法头的后边。例如:
public void show()throws Exception{
int a = 3,b = 0;
System.out.println(a/b);
}
以上是对Java中的异常情况的总结,关注我,每天分享编程小知识!
猜你喜欢
- 2024-10-06 Java中的异常(java中的异常是什么)
- 2024-10-06 Java 异常处理(java异常处理关键字)
- 2024-10-06 Java基础:异常捕获与处理,防患于未然
- 2024-10-06 「每日一面」java异常处理(java异常处理步骤)
- 2024-10-06 深入理解java异常处理机制,程序员们会了吗
- 2024-10-06 JAVA这样来处理异常(java 处理异常)
- 2024-10-06 太简单了!这套Java异常处理的总结,80%的人都没看过
- 2024-10-06 “全栈2019”Java异常第十七章:Error详解
- 2024-10-06 Java学习:Java中的异常(java中的异常是什么)
- 2024-10-06 详解Java异常(java异常处理规则(新手必看))
你 发表评论:
欢迎- 最近发表
-
- 你真的会用 Java 中的线程池吗?多个企业级线程池工具类封装实践
- 线程池的实现原理、优点与风险、以及四种线程池实现
- Java线程池ThreadPoolExecutor实现原理剖析
- 深入分析线程池的实现原理(线程池是干嘛的)
- 一文搞懂JAVA线程池工作原理(java线程池的工作流程)
- Java线程池的工作原理(java线程池的实现原理)
- 5分钟读懂C#中TcpClient、TcpListener和Socket三个类的角色
- JVM对象的创建过程(jvm运行过程中创建的对象一般存放在方法区)
- 对象组成与Java内存模型JMM分析(java对象在内存中存储的结构)
- JVM对象内存分配详细过程(栈上分配->TLAB->老年代->Eden区)
- 标签列表
-
- java反编译工具 (77)
- java反射 (57)
- java接口 (61)
- java随机数 (63)
- java7下载 (59)
- java数据结构 (61)
- java 三目运算符 (65)
- java对象转map (63)
- Java继承 (69)
- java字符串替换 (60)
- 快速排序java (59)
- java并发编程 (58)
- java api文档 (60)
- centos安装java (57)
- java调用webservice接口 (61)
- java深拷贝 (61)
- 工厂模式java (59)
- java代理模式 (59)
- java.lang (57)
- java连接mysql数据库 (67)
- java重载 (68)
- java 循环语句 (66)
- java反序列化 (58)
- java时间函数 (60)
- java是值传递还是引用传递 (62)
本文暂时没有评论,来添加一个吧(●'◡'●)