Java的IO---异常1.0

目录

异常

Class Throwable 

Java中的异常:Throwable

一些异常的例子

 ArithmeticException:by/zero

 Unparseable date:String -- Date

 NullPointerException : 空指针异常

异常处理方式

try...catch...finally处理格式

多个catch注意事项

异常中需要掌握的方法

getMessage()

toString()

printStackTrace()


异常

  • 异常:异常就是Java程序在运行过程中出现的错误
  • 异常由来:问题也是现实生活中一个具体事务,也可以通过java的类的形式进行描述,并封装成对象。其实就是Java对不正常情况进行描述后的对象体系

异常分类图解

Class Throwable 

查看API文档我们知道:

public class Throwable
extends Object
implements Serializable

Throwable类是Java语言中所有错误和异常的Throwable类。 只有作为此类(或其一个子类)的实例的对象由Java虚拟机抛出,或者可以由Java throw语句抛出。 类似地,只有这个类或其子类可以是catch子句中的参数类型。 对于异常,编译时检查的目的Throwable和任何子类Throwable ,是不是也无论是子类RuntimeExceptionError被视为检查的异常。

通常使用两个子类的实例Error异常来表示出现异常情况。 通常,这些实例是在特殊情况的上下文中新创建的,以便包括相关信息(如堆栈跟踪数据)。

throwable在创建时包含其线程的执行堆栈的快照。 它还可以包含一个消息字符串,其中提供有关错误的更多信息。 随着时间的推移,一个可以抛出的其他可抛物线可以被传播。 最后,throwable也可能包含一个原因 :另一个可抛出的,导致这个可抛出的构造。 这种因果信息的记录被称为链接的异常设施,因为原因本身可能有原因等等,导致“链”的异常,每个异常都由另一个导致。

抛出一个原因的一个原因是抛出它的类被构建在较低层次的抽象之上,上层的操作由于下层的故障而失败。 让下层投掷的投掷物向外传播是不好的设计,因为它通常与上层提供的抽象无关。 此外,这样做会将上层的API与其实现的细节相结合,假设较低层的异常是被检查的异常。 抛出“包装异常”(即,包含原因的异常)允许上层将故障的细节传达给其呼叫者,而不会导致这些缺点之一。 它保留了更改上层实现的灵活性,而不改变其API(特别是其方法抛出的一组异常)。

throwable可能有一个原因的第二个原因是抛出它的方法必须符合通用接口,该接口不允许该方法直接引用原因。 例如,假设持久集合符合Collection接口,并且其持久性在java.io顶部java.io 。 假设add方法的内部可以抛出一个IOException 。 实施可以在细节沟通IOException同时符合它的调用者Collection通过封装接口IOException在适当的未经检查的异常。 (持久集合的规范应该表明它能够抛出这种异常。)

一个原因可以通过两种方式与一个可抛出的关联:通过构造函数将原因作为参数,或通过initCause(Throwable)方法。 希望允许原因与他们相关联的新的可抛出类可以提供构造函数,这些构造函数可以引导和委派(或间接地)到Throwable函数之一的Throwable中。 因为initCause方法是公开的,它允许一个原因与任何可抛出的,即使是“传统的可抛出”相关联,其实现早于将异常链接机制添加到Throwable

按照惯例,类Throwable及其子类有两个构造函数,一个不String参数,另一个String函数采用可用于生成详细消息的String参数。 此外,那些可能与之相关联的原因的子类应该有两个构造函数,一个是Throwable (原因),另一个是String (详细信息)和一个Throwable (原因)。

Java中的异常:Throwable

查看API文档我们知道:

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

liangzai2048

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值