欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 房产 > 家装 > java程序设计2(四)

java程序设计2(四)

2026/3/8 9:33:44 来源:https://blog.csdn.net/cjxhm/article/details/144592905  浏览:    关键词:java程序设计2(四)

一、异常的理解

1. 异常:程序运行过程中出现的非正常的情况。

2. 异常的分类:

(1) 父类型:Throwable,位于 java.lang包中,Throwable 类是 Java 语言中所有错误或异常的超类(父类)

(2) 子类:Error,代表错误

(3) 子类:Exception,代表异常 二、异常的分类:【企业面试重点 + 考试重点】

1. Throwable:Throwable 类是 Java 语言中所有错误或异常的超类(父类)

(1) 提供的构造方法: Throwable():无参数的构造方法 Throwable(String message):有参数的构造方法,参数代表异常信息

(2) 提供功能方法: public void printStackTrace():打印输出异常的详细信息,用于开发人员调整程序应用 public String getMessage():获取字符串类型的异常信息,用于给用户展示提示信息

2. 子类:Error,代表错误

(1) Error 是 Throwable 的子类,用于指示合理的应用程序不应该试图捕获的严重问题

(2) 案例:内存空间不足,或是Java虚拟机方法调用时栈溢出java.lang.StackOverflowError(栈溢出)。

(3) 特点:遇到这样的错误,程序中无法处理。

3. 子类: Exception ,代表异常

(1) 运行时异常:RuntimeException及其子类异常都为运行时异常 a. 特点:编译过程编译器不检

测,运行过程中报错 b. 处理:这种异常可以避免,可以处理也可以不处理。

c. 常见的运行时异常: java.lang.ArrayIndexOutOfBoundsException(数组下标越界)

java.lang.IndexOutOfBoundsException(下标越界-List集合)

java.lang.StringIndexOutOfBoundsException(字符串下标越界)

java.lang.ClassCastException(类型转换异常)

java.lang.NullPointerException(空指针异常) java.lang.NumberFormatException(数字格式转换异常)

(2) 非运行时异常:和RuntimeException没有任何继承关系的异常类,称为非运行时异常(已检查异常)

a. 特点:编译过程编译器检测,编译过程中报错

b. 处理:必须处理,否则无法运行

c. 案例:Class.forName("hello");

d. 注意:编译报错可能出现的原因: i. 语法错误   -> 修正 语法代码 ii. 出现非运行时异常-》需要异常处理才能解决

三、异常产生的原因

1. 自动产生异常:

(1) 运行程序时,遇到错误的代码,自动产生异常,程序自动终止

(2) 结果:程序因为异常而被终止

2. 手动产生异常: (1) 关键字:throw

(2) 位置:必须应用方法内部

(3) 语法:throw new 异常类名(); (

4) 结果:程序会被终止调用

四、异常的传递 异常传递: 按着方法的调用链方向反方向传递,直至JVM,最终导致程序终止。

五、异常的处理【企业开发的重点】

1. 消极处理异常:声明异常

(1) 关键字:throws

(2) 位置:定义在方法的声明

(3) 语法: 修饰符 返回值类型 方法名(形参)throws 异常类名1,异常类名2{}

(4) 作用:消极处理异常可以让非运行时异常编译通过,但是没有从根本上解决问题,只是推卸责任,最终程序还是 因为异常而被终止

(5) 注意:可以利用父类型处理子类型的异常

2. 积极处理异常:捕获异常 (1) 位置:定义在方法的内部

(2) 语法: try{ // 可能出现异常的语句 }catch(){ // 当异常出现时,执行的语句 }

(3) try后面可以跟多个 catch结构,从上往下依次匹配;借助多态的语法,利用父类型处理子类型的异常,但是子 类在前,父类在后

(4) finally:应用在积极处理异常语法中 i. finally中定义的语句:不管有没有都会执行 ii. try..catch...finally try{ //可能出现的异常语句 }catch(异常类名 e){ //异常处理语句 }finally{ //在任何情况下都必须执行的代码 }

六、自定义异常类

1. 定义一个类继承 异常类 (1) 定义异常类如果为运行时异常,则需要继承 RuntimeException class CheckedPasswordException extends RuntimeException{} (2) 定义异常类如果为非运行时异常,则需要继承 Exception class CheckedPasswordException extends Exception{}

2. 提供 两个构造方法 (1) 一个无参数的构造方法 (2) 有参数的构造方法:带有字符串类型参数的构造方法 public CheckedPasswordException(String message){ super(message); } // 自定义异常类 class CheckedPasswordException extends Exception{ public CheckedPasswordException(){} public CheckedPasswordException(String message){ super(message); } }

七、方法的覆盖【终极版 -- 企业面试重点+企业级开发重点-细节处理+考试重点】

1. 子类的方法名、形参列表、返回值类型 和 父类相同

2. 子类的访问修饰符和父类相同或是比父类更宽

3. 子类不能抛出比父类更多、更宽的异常

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词