博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JAVA中的异常
阅读量:2359 次
发布时间:2019-05-10

本文共 1688 字,大约阅读时间需要 5 分钟。

一 异常的分类

在这里插入图片描述

这是从jdk AP里简单摘出来,java中关于Exception和ERROR的一个关系,
可以看出他们都来自于同一个父类Throwable
Error:java中的Error是比较严重的问题,非程序本身的问题,一般都是虚拟机相关的异常,如OOM,StackOverflow,如果大家接触过JVM调优不会陌生。
Exception:细分RuntimeException和其他,为什么有这么细分呢,其实跟后面的异常处理是有关系的,RuntimeException和其子类都是不可查异常(unchecked Exception),编译时不会对其进行检查,只有在运行时才会进行检查和处理。而另外一类异常,即可查异常(checked Exception),这些异常需要在编译阶段必须进行处理的,所有的非RuntimeException都属于可查异常(checkedException),如IOException。

二 异常的处理

2.1 try,catch,final

在这里插入图片描述

这个应该是最常见的,处理异常的方式,try代码块中是被监控的可能会产生异常的,catch中是对异常的处理,可以包括多个catch,注意catch中的异常,一定是先catch子类,再catch父类,finally是不管是否发生异常都会执行的。这样说不是特别准确,特别面试的时候面试官经常会问,finally的代码一定会执行嘛,什么情况下不会执行。
finally代码块不执行的几种情况:
1)在finally语句块中发生了异常。
2)在前面的代码中用了System.exit()退出程序。
3)程序所在的线程死亡。
4)关闭CPU

2.2throw和throws

throws是在方法声明时抛出一些自己处理不了的异常,或者调用者发现被调用的方法声明有Throws异常,可以继续上抛,如果所有上层的方法都不能处理,则最终会被JVM处理,处理的方法也很简单,就是打印出异常信息。

throw是在方法中,一般是在catch到异常时,抛出一些自定义的异常,后面用于问题定位。

2.3异常处理的原则

1)异常处理主要就是两点,一是抛出异常(throw,throws),二是捕获异常(try,catch,finally)。

2)分可检查异常(checked Exception)和非可查异常(unckecked Exception)。
3)如果是可查异常,不处理,是编译不通过的,两种处理方式,一种是try,catch,finally。第二种就是在方法生命是显示的抛出。
4)如果是非可查异常,不显示的throws是可以编译通过,这就需要我们平时编码的时候,注意代码可能会产生的非可查异常,可以进行trycatch,打印异常信息,或者包装成自定义的异常。
5)对应一些处理不了的异常,一定要继续上抛,而不是自己吞掉,不然后面定位问题很痛苦。

三 常见异常

说明 异常名称
算数异常类 ArithmeticExecption
空指针异常类型 NullPointerException
类型强制转换类型 ClassCastException
数组负下标异常 NegativeArrayException
数组下标越界异常 ArrayIndexOutOfBoundsException
文件已结束异常 EOFException
文件未找到异常 FileNotFoundException
字符串转换为数字异常 NumberFormatException
操作数据库异常 SQLException
输入输出异常 IOException
方法未找到异常 NoSuchMethodException
下标越界异常 IndexOutOfBoundsExecption
系统异常 SystemException
创建一个大小为负数的数组错误异常 NegativeArraySizeException
数据格式异常 NumberFormatException
非法参数异常 IllegalArgumentException

参考:

转载地址:http://whntb.baihongyu.com/

你可能感兴趣的文章
QT5.7 deploys opencv2.4.13(the version of opencv is not newer than QT)
查看>>
the principle of laplacian filter
查看>>
WinCE动态修改启动LOGO
查看>>
WINCE 的内存管理
查看>>
Windows Mobile 编译的内部结构和步骤
查看>>
WinCE BSP中的Dirs文件和Sources文件
查看>>
CE下基于Zylonite硬件平台的SD卡驱动开发
查看>>
GPRS管理与创建APN拨号连接
查看>>
WinCE 自动运行
查看>>
DeviceIoControl的使用说明
查看>>
安装Office 2007安装出错--无法找到“Office.zh-cn\officeLR.cab”文件
查看>>
Audio Driver 架构
查看>>
Windows CE 5.0启动过程分析
查看>>
什么是数据库索引
查看>>
Webpack 基础与配置
查看>>
尾调用优化(Tail Call Optimization)
查看>>
前端书籍推荐
查看>>
git常用操作
查看>>
JS+Canvas绘画&导出图片
查看>>
JS忍者秘籍-函数重载
查看>>