目录
Unparseable date:String -- Date
异常
- 异常:异常就是Java程序在运行过程中出现的错误
- 异常由来:问题也是现实生活中一个具体事务,也可以通过java的类的形式进行描述,并封装成对象。其实就是Java对不正常情况进行描述后的对象体系
异常分类图解
Class Throwable
查看API文档我们知道:
public class Throwable extends Object implements Serializable
Throwable
类是Java语言中所有错误和异常的Throwable
类。 只有作为此类(或其一个子类)的实例的对象由Java虚拟机抛出,或者可以由Javathrow
语句抛出。 类似地,只有这个类或其子类可以是catch
子句中的参数类型。 对于异常,编译时检查的目的Throwable
和任何子类Throwable
,是不是也无论是子类RuntimeException或Error被视为检查的异常。通常使用两个子类的实例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文档我们知道: