🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
# 第三章第一节-java异常 标签(空格分隔): 廖雪峰 --- 在计算机程序运行过程中,错误总会出现。 - 用户输入错误 - 读写文件错误 - 网络错误 - 和硬件的连接错误 **java只允许返回一个值**对错误的处理也变得比较困难,常用以下几种方案: 1. 规定返回的错误码在程序中使用`if`和`else`或者`switch`的形式进行判断,这样的缺点让程序看起来很杂乱. 2. 采用`javabean`把需要返回的数据封装起来,在处理逻辑中进行解析. 为提高效率java引入了一种新的**错误处理方式--异常**来处理这种问题. ## 异常 基本概念: - 异常自身就是class,带有类型信息. - 异常可以在任何地方抛出. - 异常只需要在上层捕获,和方法的调用分离. 异常的继承关系: ![异常继承树](http://p0b921qfc.bkt.clouddn.com/18-5-17/71149057.jpg) ## 异常体系: 必须捕获的异常(IDE提示必须抛出) - `Exception`以及其子类,但是不包括`RuntimeException`及其子类. - `Checked Exception`(Exception的子类,不包括RuntimeException) 不必须捕获的异常 - `Error`及其子类 - `RuntimeException`及其子类(IDE不提示抛出,运行出错会抛出,见到最多的一类) 解析: Error是指发生了严重错误,程序对此无能为力,无法自我修复的情况.比如:`OutOfMemoryError`,`NoClassDefFoundError`,`StackOverFlow`等 Exception指的是运行时发生的逻辑错误,第一类估计可能错误的问题`IOException`,`NumberFormatException`...第二类是程序出现的逻辑问题`NullPointException`,`IndexOutOfBoundsException` 对可能抛出的`Checked Exception`的方法调用: 1. 通过使用`try{} catch{} `捕获异常处理. 2. 不捕获异常,但是通过在类名出`throws`声明. 3. **通过`throws`声明需要在调用的上层进行捕获.** 4. main方法是最后捕获异常机会. ## 小节小结 - java使用异常来处理错误,并通过`try{}catsh{}`来捕获异常. - java异常也是一个class,是继承`Throwable`. - `Error`是无需捕获的严重无措. - `Exception`是应该捕获的可处理异常. - `RuntimeException`无需强制捕获,非`RuntimeException(也就是Checked Exception)`必须强制捕获,或者通过`throws`声明,让上级调用来捕获.