异常-RuntimeException-Error-Exception

来源:互联网 发布:p2p网络金融投资理财 编辑:程序博客网 时间:2024/05/29 19:54

异常:异常也是生活中一项正常的事物,所以java将其描述为一个类,封装为一个对象。

 

l 异常分为两类:

1. 严重的---------可以使用Error来描述

a) 如运行一个根本不存在的文件;分配的数组大小大于虚拟机甚至物理内存的大小。

2. 不严重的------可以使用Exception来描述

Exception分为两类(分类的关键点,其出错结果会不会对后续代码产生影响)

1.编译时被检测到的异常

2.编译时不被检测到的异常(RuntimeException)

 

l throw 与 throws的区别

1. throw使用在函数上;throws使用在函数。

2. throw后面跟异常的对象;throws后面跟类,并可以是多个,用”,”逗号隔开

3. throw是方法的停止语句,和return一样。

① 把所有的语句写在throw之前。

② 出现throwfinally语句也不用谢了

 

l Throwable体系

|-- Error 不可治愈疾病

|-- Exception 可治愈疾病

 

1. Throwable 类是 Java 语言中所有错误或异常的超类。只有当对象是此类(或其子类之一)的实例时,才能通过 Java 虚拟机或者 Java throw 语句抛出。类似地,只有此类或其子类之一才可以是 catch 子句中的参数类型。

2. 只有Throwable体系中的成员,才能被throwthrows出来。

 

Throwable常用方法

Throwable fillInStackTrace() :在异常堆栈跟踪中填充

String getMessage() :获取错误信息

void printStackTrace() :将错误输出至标准错误流。虚拟机默认使用该方法打印异常。

void printStackTrace(PrintStream s) :将错误输出到指定的错误输出流中。

void printStackTrace(PrintWriter w) :将错误输出到指定的PrintWriter

toString() :该方法调用了getMessage()放法的返回内容。

 

l Exception在java提供的特殊处理方式:

try {

需要被处理的代码。

发生异常的代码,会创建对应的异常对象。

} catch(异常类) {这里声明异常的引用,接收创建的异常对象,可以使用父类接收。

处理异常的代码块。

} finally {

一定会执行的代码。

}

 

**注意:

通过这种方式,程序员可以处理预想到的异常。

如果程序员自己不处理发生的异常,则程序会将其抛给虚拟机处理。

 

l 方法上的throws方法

在方法体上通过throws方法,声明该方法可能出现错误。

 

l 多异常处理

1. 声明的异常,要与将要发生的问题准确的对应上。

2. 当使用的方法声明了多个异常时,try该方法时,对每一个异常都使用一个catch()代码块来处理每一个异常。当然也可以使用这些异常共同的父类来接收(面向父类编程),但不建议这样。

3. 如果声明了多个异常,并且异常中出现了继承关系的类,那么父类catch()块要放在子类catch()块后面。

 

l 自定义异常

对于项目中会出现的java中没有描述的特有问题,可以自定义异常。

自定义的异常类,必须继承Throwable或其子类。

手动throw异常对象的时候,必须在方法体上throws该异常。

 

l RuntimeException

特点:

手动抛出其子类的异常的时候,不用在方法体上throws异常,编译同样可以通过。

在函数方法体上throws异常时,调用者不用处理该异常,编译同样可以通过。

 

RuntimeException异常发生的时候,希望程序停止。因为在运行时,出现了无法继续运算的情况,希望停止程序后,对代码修改。

 

0 0
原创粉丝点击