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

java异常处理

2015-12-09 13:14 393 查看
异常:指程序出现了不正常的情况

程序的异常分类:Throwable

  严重问题:Error

  问题:Exception

    编译时异常:不是RuntimeException的异常,必须处理,不处理编译就不能通过

    运行时异常:RuntimeException,不处理,原因是代码不够严谨,需要修改代码

异常的处理:

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

我们自己处理:1、try...catch...finally 2、throws

1、try...catch...finally

try{
  //可能出现问题的代码
}catch(Exception e){
  //针对异常的处理
}catch(Exception e){
  //针对异常的处理
}finally{
  //释放资源
}


如出现既有子类异常类,又有父类异常类,父类异常必须放在最后一个catch当中。一旦try里面的代码出现问题,jvm就会生成一个异常对象,然后将对象抛出,与catch里面的异常进行匹配。

异常中的几个方法:

String getMessage() :异常的消息字符串

String toString():异常的简单信息描述

void printStackTrace():获取异常类名和异常信息,以及异常出现的位置,把信息输出到控制台。

2、throws

有些时候我们没有权限去处理异常,或者处理不了,就不处理了,由调用者自行处理。这时可以用throws将异常抛出,throws必须写在方法的括号后面。

格式:throws 异常类名1, 异常类名2

public void method()throws Exception{
//执行代码
}


调用该方法时,必须对异常进行处理,可以用try...catch处理。

3、throws和throw的区别

throws:

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

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

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

throws表示一种异常的可能性,并不一定出现异常

throw:

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

只能跟一个异常对象

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

throw表示抛出异常,执行throw表示一定抛出了某种异常

4、异常处理的原则:

如果该功能内可以对问题进行处理,就用try,如果处理不了就用throws,交由调用者处理 

区别:后面程序需要继续运行就用try

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

5、finally

被finally控制的语句一定会执行,但是特殊情况下:如果在finally执行之前,jvm退出了,将不能执行

作用:用于释放资源

6、自定义异常类

自定义异常类必须继承Exception类或者RuntimeException类,通常还会有两个构造函数

public class MyException extends Exception {
public MyException(){}
public MyException(String message){
super(message);
}
}


7、异常注意事项

子类重写父类方法时,子类必须抛出相同的异常或父类异常的子异常

如果父类抛出多个异常,子类重写父类是,只能抛出相同异常或是他的子集,不能抛出父类没有的异常

如果父类没有抛出异常,子类方法绝不能抛出异常,若子类有异常需要处理,只能用try,不能用throws
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: