Java面向对象-异常

异常



前言

了解异常概念、理解Java异常处理机制、捕捉异常、抛出异常、了解Java异常体系结构


一、异常的概念

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

二、异常处理

Java编程语言使用异常处理机制为程序提供了错误处理的能力

程序中预先设置好对付异常的处理方法—>程序运行—>异常—>对异常进行处理—>处理完毕,程序继续运行

三、异常处理方法

Java的异常处理是通过5个关键字来实现的:try、catch、 finally、throw、throws
在这里插入图片描述

四、try-catch

使用try-catch块捕获异常,分为三种情况

1、正常

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

2、出现异常

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

异常是一种特殊的对象,类型为java.lang.Exception或其子类

try—发生异常—>产生异常对象—>异常类型匹配—进入catch块—>catch—程序继续执行—>try-catch后的代码段

3、异常类型不匹配

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

try—发生异常—>产生异常对象—>异常类型不匹配—>程序中断运行

说明:
1)在catch块中处理了异常

加入用户自定义处理信息

System.err.println("出现错误:被除数和除数必须是整数"); // 输出结果是红色字体

2)调用方法输出异常信息

catch(Exception e) {
    e.printStackTrace();
}
	// 当try语句中出现异常时,会执行catch中的语句,java运行时系统会自动将catch括号中的Exception e初始化,也就是实例化Exception类型的对象。e是此对象引用名称,然后e(引用)会自动调用Exception类中指定的方法,也就出现了e.printStackTrace();
	// printStackTrace()方法的意思是:在命令行打印异常信息在程序中出错的位置及原因

3)异常对象常用方法

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

五、常见的异常类型

在这里插入图片描述

六、try-catch-finally

1、在try-catch块后加入finally块

1)是否发生异常都执行

2)不执行的唯一情况

catch块中存在System.exit(int status)语句

2、存在return的try-catch-finally块

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

try—发生异常—>产生异常对象—>异常类型匹配—进入catch块—>catch(return)—>执行finally—>执行return退出方法

七、多重catch块

引发多种类型的异常

1)排列catch语句的顺序:先子类后父类

2)发生异常时按顺序逐个匹配

3)只执行第一个与异常类型匹配的catch语句

八、声明异常

throws声明某个方法可能抛出的各种异常,多个异常用逗号隔开

1)方式1:调用者处理异常

2)方式2:调用者继续声明异常

main()方法声明的异常由Java虚拟机处理

九、抛出异常

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

1)使用throw抛出异常

2)throw与throws
在这里插入图片描述

/*
在 Java 中,当前执行的语句必属于某个方法。Java 解释器调用 main 方法开始执行一个程序。每个方法都必须声明它可能抛出的必检异常的类型。这称为声明异常只对编译时异常进行声明,告知方法的调用者有异常。为了在方法中声明一个异常,就要在方法头中使用关键字 throws
*/
public void myMethodO throws IOException
/*
关键字 throws 表明 myMethod 方法可齙会抛出异常 IOException。如果方法可能会抛出多个异常,就可以在关键字 throws 后添加一个用逗号分隔的异常列表
*/
public void myMethodO throws Exceptionl, Exception2,… ,ExceptionN
    // 注意:如果方法没有在父类中声明异常,那么就不能在子类中对其进行继承来声明异常

    
package com.bdqn.demo02;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStream;


public class Demo01 {

    // throws是声明异常,必须写在方法的参数列表后,可以写多个异常对象,多个异常对象之间使用逗号隔开
    public static void main(String[] args) throws FileNotFoundException {

        // 调用一个可成产生异常的方法,调用者使用try-catch来处理可能产生的异常
        // try {
        // InputStream inputStream = new FileInputStream("F:/a.txt");
        // } catch (FileNotFoundException e) {
            // throw是抛出异常,写在方法体内部,一次只能抛出一个异常,可以单独写语句
        // throw new RuntimeException(e);
        // }

        // 调用一个可能产生异常的方法,调用者不处理,将异常继续向上声明,-
        InputStream inputStream = new FileInputStream("F:/a.txt");
    }
}

十、异常处理原则

1、异常处理与性能

2、异常只能用于非正常情况

3、不要将过于庞大的代码块放在try中

4、在catch中指定具体的异常类型

5、需要对捕获的异常做处理

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值