苟哥的笔记本
首页
文章归档
关于
文章归档
关于
首页
编程
正文
Java异常的分类
苟哥
2019-12-05 PM
1093℃
0条
Java的所有异常可以分为**异常(Exception)**和**错误(Error)两大类**,其中异常又可分为**可查异常**(CheckedException,或理解为编译时异常)和**运行时异常**(RuntimeException)。 #### 一、异常(Exception) 1、可查异常(CheckedException): 必须进行处理的异常,不处理的话是无法通过编译的。处理方式由两种: - 使用try...catch住 - 使用throws往外抛,谁调用,谁处理 常见的可查异常包含FileNotFoundException(文件不存在异常)、ClassNotFoundException(类不存在异常)、NoSuchMetodException(方法不存在异常)等。举个例子,代码如下: ```java #TestException.java package exception; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; public class TestException { public static void main(String[] args) { TestException.fileNotFoundTest(); } /** * 文件打开异常 * @param args */ public static void fileNotFoundTest(){ File f= new File("d:/qq.exe"); try{ System.out.println("试图打开 d:/qq.exe"); new FileInputStream(f); System.out.println("成功打开"); } catch(FileNotFoundException e){ System.out.println("出现异常:d:/qq.exe不存在"); e.printStackTrace(); } } } ``` 2、运行时异常(RuntimeException): 不是必须进行捕捉的异常,即在实际运行结果之前,你可能都无法发现问题,直到程序编译完成运行过程中发生错误。但是,运行时异常仍然可以被捕捉并处理。 常见的运行时异常包括ArithmeticException(除数不能为0异常)、ArrayIndexOutOfBoundsException(下标越界异常)、NullPointerException(空指针异常)。举个例子,代码如下(在TestException.java文件中增加): ```java /** * 运行时异常演示 RuntimeException * @param args */ public static void runtimeTest() { //任何除数不能为0:ArithmeticException int k = 5/0; //下标越界异常:ArrayIndexOutOfBoundsException int j[] = new int[5]; j[10] = 10; //空指针异常:NullPointerException String str = null; str.length(); } ``` #### 二、错误(Error) 错误其实指的是系统级别的异常,通常是OutOfMemoryError(内存耗尽)、StackOverflowError(内存溢出)等。Error和RuntimeException一样,也是非必须进行捕捉的,因此很多时候直到运行过程中才会发现错误,要求编码人员注意容易出错的地方。 举个例子,代码如下(在TestException.java文件中增加): ```java /** * 内存耗尽错误 * @param args */ public static void errorTest(){ StringBuffer sb = new StringBuffer(); //分配一块空间用于存储字符串 try{ for (int i = 0; i < Integer.MAX_VALUE; i++) { //不断加入 sb.append('a'); } }catch(OutOfMemoryError e){ System.out.println("出现异常"); e.printStackTrace(); } } ``` ------ #### 总结 - 用一个表格呈现异常的分类: | | 可查异常(CheckedException) | 运行时异常(RuntimeException) | 错误(Error) | | ------------ | :----------------------------------------------------------: | ------------------------------------------------------------ | -------------------------------------------------------- | | 可否捕捉 | 可 | 可 | 可 | | 是否强制捕捉 | 是 | 否 | 否 | | 常见类 | ClassNotFoundException、CloneNotSupportedException、FileAlreadyExistsException、FileNotFoundException、**InterruptedException**、**IOException**、SQLException、TimeoutException、UnknownHostException | AlreadyBoundException、ClassCastException、ConcurrentModificationException、**IllegalArgumentException**、IllegalStateException、IndexOutOfBoundsException、JSONException、**NullPointerException**、SecurityException、UnsupportedOperationException | AssertionError、**OutOfMemoryError**、StackOverflowError | - 用一个树状脑图表示各类继承关系 ![异常的分类1.png](http://images.kuryun.com/blog/typecho/异常的分类1.png)
标签:
Java
,
异常分类
非特殊说明,本博所有文章均为博主原创。
如若转载,请注明出处:
http://www.i366211.com/archives/39/
上一篇
生成测试数据
下一篇
找出一个文件夹下的最大和最小文件
取消回复
评论啦~
提交评论
栏目分类
软件安装
10
开发工具
8
算法
2
测试
1
架构
3
填坑记
2
开源
6
科普
6
私域
2
读书笔记
4
编程
48
运营
3
管理
1
标签云
算法
C程序设计语言
C语言
Java
mysql
PHP
ffmpeg
golang
VueJs
脚手架
VueJs实战项目
Intellij IDEA
Centos7
Hyperf
抖音运营
杰克韦尔奇
跌荡一百年
生成海量测试数据
企业管理
习题2-3
习题2-4
习题2-6
异常分类
File
习题2-7
习题2-8
习题2-9
习题3-3
习题3-4
习题3-5
友情链接
申请
SaaS引擎
机器人框架
京东捡漏