网站首页 > 精选教程 正文
尽管人人都希望所处理的事情能顺利执行,所操作的机器能正常运转,但在现实生活中总会遇到各种异常情况。在工作中也会频频出现异常情况。异常情况会改变正常的执行流程,导致恶劣的后果。为了减少损失,应该事先充分预计所有可能出现的异常情况,然后采取措施。
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-11-20 Java中的异常
- 2024-11-20 小白也能看懂的Java异常处理机制
- 2024-11-20 JVM是如何处理各种异常的呢?
- 2024-11-20 Java异常之异常处理类详解和代码举例
- 2024-11-20 第25天|Java入门有野,异常处理
- 2024-11-20 java安全编码指南之:异常处理
- 2024-11-20 解读Java编程思想--异常处理
- 2024-11-20 Java中异常处理机制的详细解析及其优化示例代码
- 2024-11-20 学习java, 需要知道的异常处理
- 2024-11-20 java异常处理
你 发表评论:
欢迎- 04-11Java面试“字符串三兄弟”String、StringBuilder、StringBuffer
- 04-11Java中你知道几种从字符串中找指定的字符的数量
- 04-11探秘Java面试中问的最多的String、StringBuffer、StringBuilder
- 04-11Python字符串详解与示例(python字符串的常见操作)
- 04-11java正则-取出指定字符串之间的内容
- 04-11String s1 = new String("abc");这句话创建了几个字符串对象?
- 04-11java判断字符串中是否包含某个字符
- 04-11关于java开发中正确的发牌逻辑编写规范
- 最近发表
-
- Java面试“字符串三兄弟”String、StringBuilder、StringBuffer
- Java中你知道几种从字符串中找指定的字符的数量
- 探秘Java面试中问的最多的String、StringBuffer、StringBuilder
- Python字符串详解与示例(python字符串的常见操作)
- java正则-取出指定字符串之间的内容
- String s1 = new String("abc");这句话创建了几个字符串对象?
- java判断字符串中是否包含某个字符
- 关于java开发中正确的发牌逻辑编写规范
- windows、linux如何后台运行jar(并且显示进程名)
- 腾讯大佬私人收藏,GitHub上最受欢迎的100个JAVA库,值得学习
- 标签列表
-
- nginx反向代理 (57)
- nginx日志 (56)
- nginx限制ip访问 (62)
- mac安装nginx (55)
- java和mysql (59)
- java中final (62)
- win10安装java (72)
- java启动参数 (64)
- java链表反转 (64)
- 字符串反转java (72)
- java逻辑运算符 (59)
- java 请求url (65)
- java信号量 (57)
- java定义枚举 (59)
- java字符串压缩 (56)
- java中的反射 (59)
- java 三维数组 (55)
- java插入排序 (68)
- java线程的状态 (62)
- java异步调用 (55)
- java中的异常处理 (62)
- java锁机制 (54)
- java静态内部类 (55)
- java怎么添加图片 (60)
- java 权限框架 (55)
本文暂时没有评论,来添加一个吧(●'◡'●)