Java中的Exception



(一)Throwable

Throwable 类是 Java 语言中所有错误或异常的超类。只有当对象是此类或其子类之一的实例时,才能通过 Java 虚拟机或者 Java throw 语句抛出,才可以是 catch 子句中的参数类型。Throwable 类及其子类有两个构造方法,一个不带参数,另一个带有 String 参数,此参数可用于生成详细消息。Throwable 包含了其线程创建时线程执行堆栈的快照。它还包含了给出有关错误更多信息的消息字符串。 Java将可抛出(Throwable)的结构分为三种类型:

错误(Error) 

运行时异常(RuntimeException) 

被检查的异常(Checked Exception)


1.Error   

Error 是 Throwable 的子类,用于指示合理的应用程序不应该试图捕获的严重问题。大多数这样的错误都是异常条件。和RuntimeException一样, 编译器也不会检查Error。当资源不足、约束失败、或是其它程序无法继续运行的条件发生时,就产生错误,程序本身无法修复这些错误的。     

2.Exception   

Exception 类及其子类是 Throwable 的一种形式,它指出了合理的应用程序想要捕获的条件。

对于可以恢复的条件使用被检查异常(Exception的子类中除了RuntimeException之外的其它子类),对于程序错误使用运行时异常。    

① ClassNotFoundException 

当应用程序试图使用以下方法通过字符串名加载类时: Class 类中的 forName 方法。 ClassLoader 类中的 findSystemClass 方法。 ClassLoader 类中的 loadClass 方法。 但是没有找到具有指定名称的类的定义,抛出该异常。

② CloneNotSupportedException

当调用 Object 类中的 clone 方法复制对象,但该对象的类无法实现 Cloneable 接口时,抛出该异常。重写 clone 方法的应用程序也可能抛出此异常,指示不能或不应复制一个对象。

 

③ IOException 当发生某种 I/O 异常时,抛出此异常。此类是失败或中断的 I/O 操作生成的异常的通用类。

-EOFException 

当输入过程中意外到达文件或流的末尾时,抛出此异常。 此异常主要被数据输入流用来表明到达流的末尾。 注意:其他许多输入操作返回一个特殊值表示到达流的末尾,而不是抛出异常。

-FileNotFoundException 

当试图打开指定路径名表示的文件失败时,抛出此异常。 在不存在具有指定路径名的文件时,此异常将由 FileInputStream、FileOutputStream 和 RandomAccessFile 构造方法抛出。如果该文件存在,但是由于某些原因不可访问,比如试图打开一个只读文件进行写入,则此时这些构造方法仍然会抛出该异常。

-MalformedURLException 

抛出这一异常指示出现了错误的 URL。或者在规范字符串中找不到任何合法协议,或者无法解析字符串。

-UnknownHostException 

指示主机 IP 地址无法确定而抛出的异常。

④ RuntimeException    是那些可能在 Java 虚拟机正常运行期间抛出的异常的超类。可能在执行方法期间抛出但未被捕获的 RuntimeException 的任何子类都无需在 throws 子句中进行声明。    Java编译器不会检查它。当程序中可能出现这类异常时,还是会编译通过。    虽然Java编译器不会检查运行时异常,但是我们也可以通过throws进行声明抛出,也可以通过try-catch对它进行捕获处理。

-ArithmeticException 

当出现异常的运算条件时,抛出此异常。例如,一个整数“除以零”时,抛出此类的一个实例。

-ClassCastException

当试图将对象强制转换为不是实例的子类时,抛出该异常。 例如:Object x = new Integer(0);

-LllegalArgumentException   

抛出的异常表明向方法传递了一个不合法或不正确的参数。

-IllegalStateException   

在非法或不适当的时间调用方法时产生的信号。换句话说,即 Java 环境或 Java 应用程序没有处于请求操作所要求的适当状态下。

-IndexOutOfBoundsException    

指示某排序索引(例如对数组、字符串或向量的排序)超出范围时抛出。 应用程序可以为这个类创建子类,以指示类似的异常。

-NoSuchElementException   

由 Enumeration 的 nextElement 方法抛出,表明枚举中没有更多的元素。

-NullPointerException   

当应用程序试图在需要对象的地方使用 null 时,抛出该异常。这种情况包括: 调用 null 对象的实例方法。 访问或修改 null 对象的字段。 将 null 作为一个数组,获得其长度。 将 null 作为一个数组,访问或修改其时间片。 将 null 作为 Throwable 值抛出。 应用程序应该抛出该类的实例,指示其他对 null 对象的非法使用。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值