java异常处理
2015-12-09 13:14
393 查看
异常:指程序出现了不正常的情况
程序的异常分类:Throwable
严重问题:Error
问题:Exception
编译时异常:不是RuntimeException的异常,必须处理,不处理编译就不能通过
运行时异常:RuntimeException,不处理,原因是代码不够严谨,需要修改代码
异常的处理:
如果程序出现了问题,我们没有做出处理,最终jvm会做出默认的处理,把异常的名称,原因及出现的问题输出到控制台。
我们自己处理:1、try...catch...finally 2、throws
1、try...catch...finally
如出现既有子类异常类,又有父类异常类,父类异常必须放在最后一个catch当中。一旦try里面的代码出现问题,jvm就会生成一个异常对象,然后将对象抛出,与catch里面的异常进行匹配。
异常中的几个方法:
String getMessage() :异常的消息字符串
String toString():异常的简单信息描述
void printStackTrace():获取异常类名和异常信息,以及异常出现的位置,把信息输出到控制台。
2、throws
有些时候我们没有权限去处理异常,或者处理不了,就不处理了,由调用者自行处理。这时可以用throws将异常抛出,throws必须写在方法的括号后面。
格式:throws 异常类名1, 异常类名2
调用该方法时,必须对异常进行处理,可以用try...catch处理。
3、throws和throw的区别
throws:
用在方法声明后面,跟的是异常类名
可以跟多个类名,用逗号隔开
表示抛出异常,有该方法的调用者来处理
throws表示一种异常的可能性,并不一定出现异常
throw:
用在方法体内,跟的是异常对象
只能跟一个异常对象
表示抛出异常,有方法体内的语句进行处理
throw表示抛出异常,执行throw表示一定抛出了某种异常
4、异常处理的原则:
如果该功能内可以对问题进行处理,就用try,如果处理不了就用throws,交由调用者处理
区别:后面程序需要继续运行就用try
后面程序不需要继续运行就用throws
5、finally
被finally控制的语句一定会执行,但是特殊情况下:如果在finally执行之前,jvm退出了,将不能执行
作用:用于释放资源
6、自定义异常类
自定义异常类必须继承Exception类或者RuntimeException类,通常还会有两个构造函数
7、异常注意事项
子类重写父类方法时,子类必须抛出相同的异常或父类异常的子异常
如果父类抛出多个异常,子类重写父类是,只能抛出相同异常或是他的子集,不能抛出父类没有的异常
如果父类没有抛出异常,子类方法绝不能抛出异常,若子类有异常需要处理,只能用try,不能用throws
程序的异常分类: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
相关文章推荐
- Java学习笔记-窗口创建
- Java中 VO、 PO、 BO、 QO、DAO、POJO的概念
- eclipse AVD模拟器打开以后显示没电,需要充电。
- Java正则表达式入门
- Java Web项目开发需要掌握的技术
- 海康威视的sdk中java版本Demo的Bug
- Java——1个自动拆箱的例子
- Java中为何与0xff进行与运算
- 《Java Web从入门到精通》-笔记
- CryptoJS & JAVA AES加密、解密
- java解析和创建XML 的四种方式
- spring-AOP-添加日志
- springMVC中使用List和Map绑定对象作为参数的使用方法
- Java中Mongo Aggregate 的$match的写法
- springMVC注解@ModelAttribute的用法
- java中substring和indexof() 和lastindexof()
- [javase学习笔记]-1.3 Java语言的环境搭建
- [javase学习笔记]-1.2 Java语言概述
- JAVA计算文件(夹)File类型的大小(文件个数)
- eclipse find bugs 插件集成