其他分享
首页 > 其他分享> > 2022/7/29 第七组陈美娜 异常

2022/7/29 第七组陈美娜 异常

作者:互联网

异常

第一种,用if判断出特殊情况

第二种:try{}catch(),还帮你直接解决异常的地方,还有捕捉

如果知道某个条件可能会抛异常,但是不知道抛出哪些具体的异常时,用关键字try{

}catch(),异常的数据类型参数名

throw是抛出异常,不想解决抛给第二个类

image-20220729090804448

e.printStackTrace(),输出异常在哪里

image-20220729105132642

顶级异常:throwable

 

catch能抓多个异常,从小范围到大范围【ch08】

image-20220729114650892

 

 

 

 

Error和Exception区分:

Error是编译时错误和系统错误,系统错误在除特殊情况下,都不需要你来关心,基本不会出现。而编译时错误,如果你使用了编译器,那么编译器会提示。

Exception则是可以被抛出的基本类型,我们需要主要关心的也是这个类。编译没出错,运行出错

Exception又分为RunTimeException和其他Exception。

 

异常的继承体系结构:

最顶级的Throwable:错误,异常

Exception分类:编译器异常,运行期异常

1.编译期异常:其他;MyExceptiont

编译器异常分类

java.lang.ClassNotFoundExeption:没有找到具有指定名称的类异常。 java.lang.FileNotFoundException:访问不存在的文件异常。 java.lang.IO Exception:操作文件时发生的异常。 java.sql.SQL Exception:操作数据库时发生的异常。

2.运行期异常:RunTimeException

注:各个各记五个英文的

如果一个方法没有捕获编译器异常,该方法必须使用throws来声明

异常举例:

NullPointerException: 空指针异常,一般出现于数组,空对象的变量和方法 ArrayIndexOutOfBoundsException: 数组越界异常 ArrayStoreException: 数据存储异常

ArithmeticException: 算数异常,一般在被除数是0中

ClassCastException: 类型转换异常

IllegalArgumentException: 非法参数异常 IllegalThreadStateException: 非法线程状态异常 NumberFormatException: 数据格式异常 OutOfMemoryException: 内存溢出异常 PatternSyntaxException: 正则异常

自定义异常

原因:当Java提供的异常类,不够使用时,需要自己定义一些异常类。

开发中,大部分情况下使用的都是运行期异常

为什么要手动抛异常?

因为要配合全局异常处理机制来解决问题

方法:

1.所有异常必须是throwable的子类

2.如果要定义一个编译器异常,需要继承Exception类

3.如果要定义一个运行期异常,需要继承RunTimeException

 

如果使用throw抛出一个编译期异常,就必须在方法的声明处使用throws关键字来标记异常

image-20220729115724536

 

 

image-20220729101231001

 

throws和throw区别

一个方法中,throws可以抛多个异常,用逗号隔开

throws是在定义方法时候抛出异常,throw是在方法体内抛出异常

image-20220729132848971

 

自定义异常类

定义错误码,定义异常信息

 

异常链

有时候我们会捕获一个异常后再抛出另一个异常 顾名思义就是将异常发生的原因一个传一个串起来,即把底层的异常信息传给上层,这样逐层抛出。

例:今天为什么这么穷,只因为当年潘金莲看了西门庆一眼

 

 

当异常没被解决的时候,可以选择抛出问题,留给下一级解决,要不然自己解决

主方法中不要抛了,再抛就抛给虚拟机JVM了

 

 

 

 

try--finally-return

 

 

方法的重写

重写的子类不能抛出比父类抛出的异常范围更大

标签:Exception,抛出,29,编译,编译器,2022,异常,throw,组陈美娜
来源: https://www.cnblogs.com/nanaxin/p/16533619.html