Java exception try catch finally return

Exception (Java 提供的用于处理程序中的错误的一种机制)
在Java里边万事万物都是类(在Linux世界,一切皆文件)
子类继承父类时,(子类抛出异常的种类不可以超过父类抛出异常种类)

常见的异常:
1、用户输入错误,
2、设备错误
3、硬件问题(打印机关掉,服务器问题)
物理限制
磁盘满了

处理异常的方式——采用面向对象的方式
处理过程:
抛出异常:在执行方法时,如果发生异常,则这个方法生成一个代表该对象异常的一个对象,停止执行当前路径,并把异常交给JRE。
捕获异常:JRE 得到该异常之后,寻找相应的代码来处理异常。JRE在方法的调用栈中查找,从生成异常的方法开始回溯,知道找到相应的异常处理代码为止。
异常分类:JDK 中定义了很多异常类,这些类对应了各种各样可能出现的异常事件,所有异常对象都是派生于Throwable类的一个实例。(如果内置的异常类不可以满足需求,还可以创建自己的异常类。)

在这里插入图片描述上图的int i= 1/0 是Unchecked Exception(也就是运行时异常,可以通过编译,但会在运行时报错,)
Thread.sleep()方法是Checked Exception 在编译时检查(编译时异常),需要捕获异常,不然会出错

几个常见异常及解决方法:
1.ArithmeticException
在这里插入图片描述2.NullPointerException

if(对象 !=null){
	对象.方法
}

3.ClassCastException

void func(Object o){
	if (o instanceof A){
	A a = (A) o;
}
}

4.ArrayIndexOutOfBoundException

int[] a = {1,2}
int i = x;
if(i <= a.length()-1){
System.out.ptint("aaaa" + a[i])
}

异常处理方法之一——捕获异常(try,catch,finallly)

在这里插入图片描述异常处理方法之二——手动抛出异常
谁调用我,谁抛出异常,main 方法也可抛出异常(交给JRE 处理,不建议)
在这里插入图片描述异常处理方法之三——自己new一个,然后throw
在这里插入图片描述

try
定义了一段代码,该段代码就是一次捕获并且处理的范围。在执行过程中,当任意一条语句产生异常时,就回调过改短后边代码。代码中可能会产生并抛出一种或者是几种类型的异常对象,在后边俺的catch语句要对其进行捕获并做处理(异常处理的方法结束执行之后,不会回到try语句尚未执行的代码部分)
并且每个try 都必须跟一个 catch 或者是 finally 可以都跟

catch
1、每个try 语句可以伴随一个或者多个catch 语句,用来处理可能产生的不同种类的异常对象
2、常用方法:(都继承Throwable 类)
printStackTrace() ,用来跟踪异常处理事件发生时堆栈的内容
toString() ,显示异常的类名,异常产生的原因
getMessage(),只显示产生异常的原因,不显示类名

写的顺序——子类异常放在父类上边写,不然被认为在父类中执行了此方法

finally
有一些必须执行的语句放到finally中执行
而且会在finally中关闭程序块以打开的资源(文件流,数据库链接等)

执行顺序
try catch 给返回值赋值
执行finally
return
下图没报异常执行顺序
在这里插入图片描述报异常执行顺序
在这里插入图片描述可以自定义异常,模仿人家给的写
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_42157992/article/details/99815261