第七章,异常

面向对象

第七章,异常
1,什么是异常
  • 异常是指在程序的运行过程中所发生的不正常的事件,它会中断正在运行的程序
2,异常处理
  • java编程语言使用异常处理机制为程序提供了错误处理的能力
程序中预先设置好对付异常的处理方法->(程序运行)异常->(对异常进行处理)
->(处理完毕,程序继续运行)
  • java如何进行异常处理
    • Java的异常处理是通过5个关键字来实现的:try、catch、 finally、throw、throws
      在这里插入图片描述
3,try-catch块
  • 使用try-catch块捕获异常

    • 情况一,正常

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

      public void method(){
               try {
                      // 代码段 1
                      // 产生异常的代码段 2
                      // 代码段 3
               } catch (异常类型 ex) {
                       // 对异常进行处理的代码段4
               }
               // 代码段5
      }
      
      • 异常是一种特殊的对象,类型为java.lang.Exception或其子类

      • printStackTrace()的堆栈跟踪功能显示出程序运行到当前类的执行流程

      java.util.InputMismatchException
      at java.util.Scanner.throwFor(Scanner.java:840)
      at java.util.Scanner.next(Scanner.java:1461)
      at java.util.Scanner.nextInt(Scanner.java:2091)
      at java.util.Scanner.nextInt(Scanner.java:2050)
      at cn.jbit.exception.Test3.main(Test3.java:15)
          
          InputMismatchException:异常类型
          main:在main方法中抛出了异常
          java:15 :出现异常的位置
      
    • 情况三,异常类型不匹配

      public void method(){
              try {
                       // 代码段 1
                      // 产生异常的代码段 2
                     // 代码段 3
              } catch (异常类型 ex) {
                     // 对异常进行处理的代码段4
              }
              // 代码段5
      }
      异常类型不匹配,程序中断运行
      
  • 常见的异常类型

    在这里插入图片描述

4,try-catch-finally
  • 在try-catch块后加入finally块

    • 是否发生异常都执行

    • 不执行的唯一情况
      在这里插入图片描述

  • 存在return的try-catch代码块

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

    在这里插入图片描述

  • 多重catch块

    • 排列catch 语句的顺序:先子类后父类
    • 发生异常时按顺序逐个匹配
    • 只执行第一个与异常类型匹配的catch语句
5,声明异常
  • 声明异常的方式
    • 方式一:调用者处理异常
    • 方式二:调用者继续声明异常
      • main()方法声明的异常由java虚拟机处理
6,抛出异常
  • 除了系统自动抛出异常外,有些问题需要程序员自行抛出异常

    • 使用throw抛出异常

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

7,自定义异常
  • 当jdk中的异常类型不能满足程序的需要时,可以自定义异常类

  • 使用自定义异常的步骤 在这里插入图片描述

8,异常处理原则
  • 异常处理与性能
  • 异常只能用于非正常情况
  • 不要将过于庞大的代码块放在try中
  • 在catch中指定具体的异常类型
  • 需要对捕获的异常做处理
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值