异常处理相关知识点

异常处理

1.2 异常

如果由于出现错误而使得某些操作没有完成,程序应该:

1:返回到一种安全状态,并能够让用户执行一些其他的命令

2:允许用户保存所有的操作的结果,并以妥善的方法终止程序

异常从父类Throwable向下有两个分支

1.Error:错误是由Java产生的,这种情况程序员无法通过代码处理。

2.Exception: Exception以及它的子类,代表程序运行时发送的各种不期望发送的事件。可以被Java异常处理机制使用,是异常处理的核心

Exception又分为非检查型异常和检查型异常

常见的运行期异常下图:

异常 描述
ArithmeticException 当出现异常的运算条件时,抛出此异常。例如,一个整数“除以 零”时,抛出此类的一个实例
ArrayIndexoutOfBoundsException 用非法索引访问数组时抛出的异常。如果索引为负或不小于数组大 小,则该索引为非法索引
ArrayStoreException 试图将错误类型的对象存储到一个对象数组时抛出的异常
ClassCastException 当试图将对象强制转换为不是实例的子类时,抛出该异常
NullPointerException 当应用程序试图在需要对象的地方使用null时,抛出该异常
NumberFormatException 当应用程序试图将字符串转换成一种数值类型,但该字符串不能转 换为适当格式时,抛出该异常
IndexOutOfBoundsException 指示某排序索引(例如对数组、字符串或向量的排序)超出范围时 抛出

常见的编译期异常

异常 描述
ClassNotFoundException 应用程序试图加载类时,找不到相应的类,抛出该异常
CloneNotSupportedException 当调用Objeet类中的clone方法吉降对龟,但该对象的类无法实现Cloneable接口时,抛出该异常
llegalAccessException 拒绝访问一个类的时候,抛出该异常
InstantiationException 当试图使用Class类中的newInstance方法创建一个类的实例,而指定的类对象因为是一个接口或是一个抽象类而无法实例化时,抛出该异常
InterruptedException 一个线程被另—个线程中断,抛出该异常
NoSuchFieldException 请求的变量不存在
NoSuchMethodException 请求的方法不存在

对于编译期异常处理有两种不同的处理方式。

(1)使用try I catch {l finally 语句块处理它。
(2)在函数签名中使用throws声明交给函数调用者去解决。

throws 和 throw 有什么区别 ?

(1);作用不同:throw用于在程序中抛出异常;throws用于声明在该方法内抛出了异常
(2);使用位置不同:throw位于方法体内部,可以作为单独语句使用;throws必须跟在方法参数列表的后面,不能单独使用。
(3);内容不同:throw抛出一个异常对象,而且只能是一个;throws后面跟异常类,而且可以跟多个异常类
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容