1.finally块只能定义在异常处理机制的最后,可以直接跟在try后面或者最后一个catch之后。
2.fianlly可以保证只要程序运行到try当中,那么无论try当中的代码片段是否出现异常,finally块里面的代码都必然执行
3.通常把释放资源等操作放在fianlly中,比如流的关闭
throws声明方法抛出
当我们调用一个含有throws声明异常抛出的方法时,编译器要求我们必须处理这个异常,处理方式有两种:
1:try—catch自行捕获异常并处理
2:在当前方法上继续使用throws声明将该异常抛出
注:永远不要在main方法throws,意味要将异常抛给jvm处理,jvm的处理结果就是直接死机,就是立即结束程序的执行
throw 异常抛出
抛出: 一个方法内部使用throw抛出一个异常,就要在方法上使用throws声明该异常的抛出以告知调用者处理这个异常 (RuntimeException例外)
throw new IllegalAgeException("年龄不合法");
自定义异常:
用super继承Exception中相同参数的方法,方法名自定义 ,通常用于描述业务逻辑功能错误 ,Exception类继承自Throwable,Exception里面全是构造方法Exception()及其重载!
public class IllegalAgeException extends Exception{
private static final long serialVersionUID = 1L; //因为继承了Serialixable序列化接口
public IllegalAgeException() {
super();
// TODO Auto-generated constructor stub
}
public IllegalAgeException(String message, Throwable cause) {
super(message, cause);
// TODO Auto-generated constructor stub
}
public IllegalAgeException(String message) {
super(message);
// TODO Auto-generated constructor stub
}
}
jdk1.8后try(){}自动关闭:
java中try(){}与try{}finally{}
try(){}块退出时,会自动调用()中io对象的close()方法,关闭资源。
注:自动关闭语法是编译器认可,编译后的.class文件中流的关闭还是在finally中进行的
eclipse捕捉异常 初始化类对象 surround with try/catch Block
//1.调用类中的方法:
try {
DZTestClientclient =newDZTestClient();
client.sendMsg();
} catch (Exception e) {
System.out.println("Error" + e); // 出错,则打印出错信息
}
//2.在if else 语句及catch中常用的人工抛出异常:
throw new Exception("不支持的数据类型【"+a.toString()+"】,请检查!");
try {
...
} catch (Exception ex) {
ex.printStackTrace();
throw new Exception("连接数据库失败!连接参数:<br>DataSource:" + dataBase);
}
//3.等待多少秒之后在运行 线程方法sleep
Thread.sleep(Long.parseLong("30000"));