java的异常处理块的形式_Java 异常处理详细解读

异常(Exception)指的是所有可能造成计算机无法正常处理的情况。发生异常时,将阻止程序的运行,若不妥善处理异常,可能造成计算机死机。经过异常处理,可以保证程序的正常运行,我们把针对不同的异常做妥善的处理的方式叫做“异常处理机制”。

异常处理的目的:加强程序的健壮性、

Java 中,所有的异常都被封装到相应的类中,同时,用户也可以自定义异常类和自定义抛出异常。

抛出异常(throw):是指将异常提交给运行时系统的过程。

捕获异常(

e6144563f2423bc1cfbf1285a065b30a.png

异常类 Throwable

异常类是指由程序抛出的异常对象所属的类。

异常可以分为两大类:

类和 java.lang.Error

类。这两个类均继承自 java.lang.Throwable

Error 类通常指的是

Exception 类通常指的是可以处理的异常,分为对于编译时异常,不解决编译就不会通过

对于运行时异常,可以选择性地来进行处理,如果不处理则出现异常时将交给 JVM 默认处理

efec0938116b1d20d31e529162c69469.png

获取异常信息的方法

95e98b5f840547031b98bf432d5694e8.png

Java 中常见的异常类

异常

描述

NullPointerException

空指向异常(空指针异常)。指的是使用了一个未初始化的对象(未开辟内存

ArithmeticException

算术异常。如:除以零

ArrayIndexOutOfBoundsException

数组下标越界异常。数组的

FileNotFoundException

文件未找到异常

OutOfMemoryExceptin

内存溢出异常(内存不足异常)。可用内存不足以分配给一个对象时抛出

NoSuchElementExceptin

调用了类集中不存在的元素

ClassCastExceptin

对象与类集中的元素不兼容

UnsupportedOperationExceptin

修改一个不允许修改的对象

异常处理 try-catch-

死了都要 try,不 try 到 catch 不痛快

60958506.jpg

当发生异常时,通常有两种处理方法:

try-catch-finally

异常处理的语法:

try {

// 要检查的语句

} catch (异常类 e) {

// 异常发生时的处理语句

e.printStackTrace(); // 打印异常信息

} finally {

// 一定会运行到的语句

}

try 语句块不可以独立存在,必须与 catch 或 finally 同存,finally 语句块可以省略

catch 区块可以有多个,此时异常类型必须子类在前,父类在后

当 try 区块捕获到异常时,不执行接下来的语句,立即进入 catch 区块

67feb53ae0c06716b3418ac4527f3431.png

finally 语句块不会被执行的情况

在 finally 语句块中发生了异常

在前面的

程序所在的线程死亡

CPU 关闭

异常处理的几种形式

try…catch

5b6d542f59254bab144af338a5eebf67.png

try…catch…finally

b6b787e2e1ba786c9230103dd5d424d7.png

try…finally

8de0e402924a09fc5cb0ecd8c752f783.png

向上抛出异常 throws

方法头中使用 throws

关键字可以表明这个方法可能存在的异常类型,此方法不处理异常,而是将该异常提交给调用这个方法的方法。

86a4671a898f62c66c01d9c0ab9d0982.png

public class Test {

public static vo

自行抛出异常 throw

throws

用于方法声明中,声明一个方法会抛出哪些异常,而 throw

是方法体中实际执行抛出异常的动作。

throw 异常类型的

try {

throw new ArrayIndexOutOfBoundsException("我是异常信息");

} catch (Exception e) {

e.printStackTrace();

}

自定义异常类

当系统提供的异常类不足以满足业务

class 自定义异常类 extends 异常类型 {

}

public class Test {

public static void main(String[] args) {

try {

throw new MyException("我是自定义异常类");

} catch (Exception e) {

e.printStackTrace();

}

}

}

class MyException extends Exception {

private String msg;

public MyException(String msg) {

this.msg = msg;

}

@Override

public String toString() {

return "MyException [msg=" + msg + "]";

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值