异常以及异常处理
异常分为错误和异常,在这里可以比喻为绝症与阑尾炎的关系
错误无法挽回
异常可以调试
两种调试方法
try -catch、throws
或者称为异常检测更为合理
try-catch是将可能发生异常的部分进行框选,针对其中发生的异常的原因以及部位进行反馈,
try-catch分为三种方法:
1、try-catch
try{
代码块(可能出错)
}catch(异常原因 ‘由aip查找得到或者由出错后复制’ 错误命名 ){
代码块,这里的代码块可以是输出函数,课本上用的是sout
}
2、try-catch-catch
ry{
代码块(可能出错)
}
catch(异常原因 ‘由aip查找得到或者由出错后复制’ 错误命名1 ){
代码块1,这里的代码块可以是输出函数,课本上用的是sout
}
catch(异常原因 ‘由aip查找得到或者由出错后复制’ 错误命名2 ){
代码块2,这里的代码块可以是输出函数,课本上用的是sout
}
3、try-(catch)-finally
ry{
代码块(可能出错)
}
catch(异常原因 ‘由aip查找得到或者由出错后复制’ 错误命名 ){
代码块,这里的代码块可以是输出函数,课本上用的是sout
}
这一段可以不写
finally{
代码块
}
finally的代码块,一定会运行,而不是向catch一样符合错误类型的运行
第二种异常反馈
throws反馈,笔者将其成为甩锅式反馈
出现异常后,直接使用throws甩出,异常将在控制台中反馈,
若方法中出现异常,则调用方法的类与对象都需要throws
当出现多个异常时,如果包含父子关系,则只需要抛出父类异常即可
如果不包含,则需要将异常类依依抛出
import java.io.FileNotFoundException;
public class Dome05 {
// public static void main(String[] args) throws FileNotFoundException {
// read("B.text");//Exception in thread "main" java.io.FileNotFoundException: 不存在
// //当出现问题时,会进行反馈
// }
//
// private static void read(String path) throws FileNotFoundException {
// if(!path.equals("a.text")){
// throw new FileNotFoundException("不存在");
// }
// }
/**
* 这是第一种throw 只有一种报错反馈情况
*/
public static void main(String[] args) throws FileNotFoundException {
reae("上林赋");
}
private static void reae(String path) throws FileNotFoundException {
if(path.equals("上林赋")){
throw new FileNotFoundException("是这个文件");//throws调试,只会运行一个
}
if(!path.equals("a.text")){
throw new FileNotFoundException("不是这个文件");
}
}
/**
*这是第二种
*/
}