您的位置:首页 > 编程语言 > Java开发

(15)Java学习笔记——面向对象08——异常

2017-01-17 19:31 197 查看
异常

* 程序的异常:Throwable
* 严重问题:Error (不处理!这种问题一般都是很严重的。)
* 问题:Exception
* 编译期问题:不是RunTimeException的异常 (必须进行处理的问题,因为不处理,编译不能通过)
* 运行期问题:RunTimeException (这种问题也不处理,这个问题出现是代码不够严谨,需要修正代码。)
对异常的处理:

JVM默认处理:

如果程序出现问题,我们没有做处理,最终JVM会做默认处理。
把异常的名称,原因及出现的问题等信息输出在控制台。

同时会结束程序。

我们的处理:

A / try...catch ...finally

格式:

* try...catch...finally的处理格式:
* try{
* 可能出现问题的代码;
* }catch(异常名 变量) {
* 针对问题的处理;
* finally {
* 释放资源;
* }
*
* 变形格式:
* try{
* 可能出现问题的代码;
* }catch(异常名 变量){
* 针对问题的处理;
* }注意:
try里面的代码越少越好。

catch必须有内容,哪怕是给出一个简单的提示。才有意义。才没有隐藏异常。

范例:

public class ExceptionDemo {
public static void main(String[] args) {
//第一阶段
int a = 10;
int b = 0;
// System.out.println(a/b);
try {
System.out.println(a/b);
} catch (ArithmeticException ae){
System.out.println("除数不能为0");
}

//第二阶段
System.out.println("over");
}
}
/*返回结果:
除数不能为0
over*/多个异常处理的格式:
* 多个异常处理的格式:
* try {
* ...
* } catch(异常名 变量名) {
* ...
* }
* catch(异常名 变量名){
* ...
* }
* ...
* 注意:一旦try里面出了问题,就会在这里吧问题抛出去,然后和catch里面的问题进行匹配,
* 一旦有匹配的,就执行catch里面的处理,然后结束。
* 继续执行后面的语句。
编译时期异常和运行时期异常的区别:
编译期异常:java程序必须显示处理,否则程序就会发生错误,无法通过编译

运行期异常:无需显示处理,也可以和编译时异常一样处理

在try里面发现问题后,jvm会生成一个异常对象,然后把这个对象抛出,和catch里面的类进行匹配。

如果该对象是某个类型的,就会执行该catch里面的处理。

异常中要了解的方法:

public String getMessage()   //异常的消息串

public String toString()   //返回异常的简单信息描述

 thorws 异常处理方式

无法处理或者不处理的异常,为了解决出错问题,采用throws抛出。

在方法声明上抛出,是为了告诉调用者注意会发生问题。

格式:

throws 异常类名

注意:这个格式必须跟在方法的括号后面

**注意:尽量不要在main方法上抛出异常。

编译期异常的抛出在运行期必须处理!

 throw  异常处理方式:

在功能方法内部出现某种情况,程序不能继续运行,需要进行跳转时,就用throw把异常对象抛出。

这个时候抛出的是异常的对象,而不是异常类。

throw 和 throws的区别:

throws

用着方法声明后面,跟的是异常类名

可以跟多个异常类名,用逗号隔开

表示抛出异常,由该方法的调用者来处理

表示出现异常的一种可能性,并不一定会发生这些异常。

throw

用在方法体内,跟的是异常对象名

只能抛出一个异常对象名

表示抛出异常,由方法体内的语句处理

执行throw则一定抛出了某种异常

异常处理的原则:

该功能内部可以将问题处理,用try

如果处理不了,交由调用者处理,用throws

区别:

后续程序需要继续运行用try

后续程序不需要继续运行就用throws

finally关键字

格式:try...catch...finally...

特点:

被finally控制的语句体一定会被执行

作用:用于释放资源

——————————————————————————————————————

自定义异常

在实际的开发中,需要自己定义异常,且比较继承Exceptin或者RunTimeException。

继承Exception

继承RunTimeException

范例:

public class MyException extends Exception {

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java 异常