标签:final 方式 使用方法 alt ima try dex 就是 exce
RuntimeException是在运行是才会发生的异常
所有不是RuntimeException的异常,统称为Checked Exception
在编译时就必须做出处理,否则无法通过编译
举例:
IOException、SQLException等
使用"try/catch"捕获异常
使用"throws"声明异常
异常捕获图:
特点:
三个关键词:try-catch-finally
异常处理过程:
出现异常,系统抛出一个异常
通过它的类型来catch并且处理它---多个catch因为异常类型不一样处理方式也不一样
通过finally语句为异常处理提供一个统一的出口---无论是否遇到异常都会执行finally内的语句
finally所指定的代码都要被执行(catch语句可以由多条)
fianlly语句最多有一条,根据实际情况可有可无
会用到IO流的知识
实例:
package com.exception;
?
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
?
public class Test02 {
public static void main(String[] args) {
?
FileReader reader = null;
/*要么抛出,要么try...catch*/
try{
reader = new FileReader("c:/a.txt");
?
/*测试输出*/
System.out.println("Step1");
// char c1;
// try {
// /*有了这个对象就开始读字符---使用方法*/
// c1 = (char) reader.read(); //这个方法还需要抛出一个异常去处理
// }catch (IOException e){
// //TODO Auto-generated catch block
// System.out.println();
// }
// /*
// 可以外面一个try里面再一个try
// 也可以再外围再补获一次异常
// */
char c1 = (char) reader.read();
System.out.println(c1);
?
}catch (FileNotFoundException e){
?
/*测试输出*/
System.out.println("Step2");
//TODO Auto-generated catch block
e.printStackTrace();
}catch (IOException e){
e.printStackTrace();
}finally {
?
/*测试输出*/
System.out.println("Step3");
// reader.close(); //因为之前只在try里面声明了对象,所以出了try代码块就不能使用了
/*
close抛出异常也需要我们捕获异常
所以在finally内部还要写一层try...catch
然后加一个判断
这就是一个比较完善的try...catch处理流程
*/
try {
if (reader != null){
reader.close();
}
}catch (IOException e){
e.printStackTrace();
}
}
}
}
/*
FileNotFoundException和IOException有父类和子类的关系
一般有父子关系的类都是---子类异常在前父类异常在后
因为在捕获异常的时候无论是FileNotFoundException和IOException都会到IOException中
因为子类的类型也属于父类里面
也可以处理
Reader是需要关闭的---节省资源(无论是执行完成还是抛出异常)
*/
标签:final 方式 使用方法 alt ima try dex 就是 exce
原文地址:https://www.cnblogs.com/JunkingBoy/p/14682632.html