异常
概述:即非正常情况,通俗地说,异常就是程序出现的错误
异常的分类(Throwable)
- 顶层父类(Thromable)
- 异常(Exception)
合理的应用程序可能需要捕获的问题 :举例:空指针异常(NullPointerException)
- 错误(error)
合理的应用程序不应该试图捕获的问题:举例:内存不足(StackOverFkowError)
异常的处理方式
JVM默认的异常处理方式:在控制台打印错误信息,并终止程序
开发中异常的处理方式
- try.....catch(finally):捕获,自己处理
格式:
try{
//尝试执行的代码(有可能出现问题的代码)
}eatch(Exception c){
//出现问题后的解决方案
}finally{ //即使在try,eatch中有return,flnally中的代码也会执行
//写在这里的代码正常情况下一定会执行,一般是用来释放资源
}
执行流程:
先执行 try{}中的内容,看是否有问题(异常)
没有:直接执行finally语句中的内容
有:跳转到eatch(){}语句中开始执行,再执行finally()语句中的内容
特点: 处理完异常,程序会继续执行
- throws:抛出,交给调用者处理
格式:直接在方法名后面写就可以了:
public void 方法名() throws Exceptoin(异常类型){
}
栗子:
public class YiChang { public static void main(String[] args) throws Exception { //需求:调用show() //因为show()方法已经抛出了一个异常,作为调用着(mian函数)必须处理这个异常 //方案一:接着抛 mian函数继续抛出异常,抛给JVM来进行处理 //方案二:采用try,ratch处理 // show(); //直接调用方法会报错 try{ show(); }catch (Exception e){ System.out.println("方法报错啦"); } System.out.println("你看我执行了吗?"); } public static void show() throws Exception{ int a = 10/0; System.out.println("a : " + a); } }