Java面向对象-异常

异常

异常的概念

异常是指在程序的运行过程中所发生的不正常的事件,它会中断正在运行的程序

异常处理

Java编程语言使用异常处理机制为程序提供了错误处理的能力
(1)程序中预先设置好对付异常的处理方法
(2)程序运行出现异常
(3)对异常进行处理,处理完毕,程序继续运行
Java的异常处理是通过5个关键字来实现的:try、catch、finally、throw、throws
捕获异常:
try:执行可能产生异常的代码
catch:捕获异常
finally:无论是否发生异常,代码总能执行
声明异常:
throws:声明方法可能要抛出的各种异常
抛出异常:
throw:手动抛出异常

try-catch

1.使用try-catch块捕获异常,为正常情况

public void method(){
         try {
                  // 代码段(此处不会产生异常)
         } catch (异常类型 ex) {
                 // 对异常进行处理的代码段
         }
         // 代码段
}

2.使用try-catch块捕获异常,为出现异常

public void method(){
         try {
                // 代码段 1
                // 产生异常的代码段 2
                // 代码段 3
         } catch (异常类型 ex) {
                 // 对异常进行处理的代码段4
         }
         // 代码段5
}

异常是一种特殊的对象,类型为java.lang.Exception或其子类。
先从try进入发生异常,产生异常对象,异常类型匹配进入catch块,程序继续执行,try-catch块后的代码段。
3.printStackTrace()的堆栈跟踪功能显示出程序运行到当前类的执行流程
4.使用try-catch块捕获异常,为异常类型不匹配

public void method(){
        try {
                 // 代码段 1
                // 产生异常的代码段 2
               // 代码段 3
        } catch (异常类型 ex) {
               // 对异常进行处理的代码段4
        }
        // 代码段5
}

先从try进入发生异常,产生异常对象,异常类型不匹配,程序直接中断运行。
5.在catch块中处理异常
加入用户自定义处理信息:

System.out.println("出现错误:被除数和除数必须是整数")

调用方法输出异常信息:
e.printStackTrace();
异常对象常用的方法:

方法说明
void printStack Trace()输出异常的堆栈信息
String getMessage()返回异常信息描述字符串,是printStackTrace()输出信息的一部分

常见的异常类型

异常类型说明
Exception异常层次结构的父类
ArithmeticException算术错误情形,如以零作除数
ArrayIndexOutOfBoundsException数组下标越界
NullPointerException尝试访问null对象成员
ClassNotFoundException不能加载所需的类
IllegalArgumentException方法接收到非法参数
ClassCastException对象强制类型转换出错
NumberFormatException数字格式转换异常,如把“abc”转换成数字

try-catch-finally

1.无返回值的:catch中如果有return,会在finally块运行完再运行catch的return。
2.有返回值的:catch块的return会正常运行,finally块运行完会再回到catch的return处,但不会再次运行,如果finally块中也有return,则会覆盖catch的return。

多重catch块

引发多种类型的异常:
排列catch语句的顺序:先子类后父类
发生异常时按顺序逐个匹配
只执行第一个与异常类型匹配的catch语句

声明异常

throws声明某个方法可能抛出的各种异常,多个异常用逗号隔开
方式1:调用者处理异常
方式2:调用者继续声明异常
main()方法声明的异常由Java虚拟机处理

抛出异常

除了系统自动抛出异常外,有些问题需要程序员自行抛出异常,使用throw抛出异常

throwthrows
生成并抛出异常声明方法内抛出了异常
位于方法体内部,可作为单独语句使用必须跟在方法参数列表后面,不能单独使用
抛出一个异常对象,且只能是一个声明抛出异常类型,可以跟多个异常

异常处理原则

1.异常处理与性能
2.异常只能用于非正常情况
3.不要将过于庞大的代码块放在try中
4.在catch中指定具体的异常类型
5.需要对捕获的异常做处理

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值