2021/8/27 Java第五章 异常

一.什么是异常

二.异常体现结构
java.lang.Throwable
            |-----java.lang.Error:一般不编写针对性的代码进行处理
            |-----java.lang.Exception:可以进行异常的处理
                |-----编译时异常(checked)
                    |-----IOException
                        |-----FileNotFoundException
                    |-----ClassNotFoundException
                |-----运行时异常(unchecked,RuntimeException)
                    |-----NullPointerException    //空指针异常
                    |-----ArrayIndexOutOfBoundsException      //数组下标越界
                    |-----ClassCastException    //类型转换异常
                    |-----NumberFormatException  //包装类型转换异常
                    |-----InputMismatchException  //输入不匹配异常
                    |-----ArithmeticException    //算数异常

 

三.异常处理机制
    异常的处理:抓抛模型
        过程一:"抛":程序在正常执行的过程中,一旦出现异常,就会在异常代码处生成一个对应异常类的对象。并将此对象抛出。一旦抛出对象以后,其后的代码就不再执行。
            关于异常对象的产生:

                                        1.系统自动生成的异常对象
                                        2.手动的生成一个异常对象,并抛出(throw): throw new Exception
                        public void setAge(int age) throws Exception {
                                    if(age>0&&age<101) {
                                            Age = age;
                                    }else {
                                            throw new Exception("年龄必须在1到100之间!");
                                       }
                                }
            
        过程二:"抓":可以理解为异常的处理方式:1.积极异常解决方案:try-catch-finally      2.消极异常解决方案:throws+异常类型

            异常处理的方式一:try-catch-finally的使用
                try{
                    //可能出现异常的代码
                }catch(异常处理类型1 变量名1){
                    //处理异常的方式1
                }catch(异常处理类型2 变量名2){
                    //处理异常的方式2
                }catch(异常处理类型3 变量名3){
                    //处理异常的方式3
                }
                    ...
                finally{
                    //一定会执行的代码
                }

            说明:
            1.finally是可选的
            2.使用try将可能出现异常代码包装起来,在执行过程中,一旦出现异常,就会生成一个对应异常类的对象,根据此对象的类型,去catch中进行匹配
            3.一旦try中的异常对象匹配到某一个catch时,就进入catch中进行异常处理。一旦处理完成,就跳出当前的try-catch结构(在没有写finally的情况)。继续执行其后的代码
            4.catch中的异常类型如果没有子父类关系,则谁声明在上,谁声明在下无所谓
               catch中的异常类型如果满足子父类关系,则要求子类一定要声明在父类之上,否则报错
            5.常用的异常对象处理方式:1.String getMessage()//用字符串形式打印出异常信息   2.printStackTrace()//打印异常堆栈信息,追根溯源     首推
            6.在try结构中声明的变量,在出了try结构中就不能在被调用了
            7.在抓捕异常的时候首推父类异常对象Exception e
            8.在try代码块或catch代码块中使用return依然会执行finally中的代码
            9.在catch块中使用System.exit(0);       //强制退出当前程序,唯一一个不执行finally中的代码
            10.使用try可以让程序在发生异常时继续运行下面的代码
            11.像数据库连接丶输入输出流丶网络编程Socket等资源,JVM是不能自动回收的,我们需要自己手动的进行资源的释放。此时的资源释放,就需要声明在finally中。
            12.try-catch-finally结构可以嵌套

            异常处理的方式二:throws+异常类型
                public static void eat() throws Exception{
                            int num=4;
                            int num2=0;
                            System.out.println(num/num2);
                           System.out.println("吃!");
                    }
            说明:
            1."throws+异常类型"写在方法的声明处。指明此方法执行时,可能会抛出的异常类型。
               一旦当方法体执行时,出现异常,仍会在异常代码处生成一个异常类的对象,此对象满足throws后异常类型时,就会被抛出。异常代码后续的代码,就不再执行!
            2.体会:try-catch-finally:真正的将异常给处理掉了。throws的方式只是将异常抛给了方法的调用者。并没有真正将异常处理掉。
            3.开发中如何选择使用try-catch-finally还是使用throws?
                3.1 如果父类中被重写的方法没有throws方式处理异常,则子类重写的方法也不能使用throws,意味着如果子类重写的方法中有异常,必须使用try-catch-finally方式处理。
                3.2 执行的方法a中,先后又调用了另外的几个方法,这几个方法是递进关系执行的。我们建议这几个方法使用throw的方式进行处理。而执行的方法a可以考虑使用try-catch-finally方式进行处理。

四.如何自定义异常类

 练习小作业:

        1.按照控制台提示信息输入1~3之间的任意一个数字,程序将根据输入的数字输出相应的课程名称。 如下图所示:

                1.C#编程            2.Java编程                3.SQL基础   

                

2.在Person类的setAge(int age)方法中对年龄进行判断,如果年龄介于1~100,则直接赋值,否则抛出异常。然后在TestException2类中创建Person对象并调用setAge(int age)方法,使用try-catch捕获并处理异常。如下图所示:

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 第1章《认识java语言》是介绍Java语言的起源、发展以及特点等基本知识。Java是一种跨平台的高级编程语言,被广泛应用于开发Web和移动应用程序等领域。它具有面向对象、可移植、健壮性好等特点。 第2章《Java语言基础》是介绍Java语言的基本语法、数据类型、运算符、控制流程等内容。学习这些基础知识对于理解和编写Java程序至关重要。 第3章《面向对象程序设计之一》是介绍面向对象编程的原理和基本概念。学习面向对象的思想和方法可以提高程序的可扩展性和重用性。本章内容包括类与对象、封装、继承、多态等知识点。 第4章《面向对象程序设计之二》是进一步探讨面向对象编程的高级特性。学习抽象类、接口、内部类等内容可以让我们写出更加灵活和健壮的Java程序。 第5章《Java基础类库》是介绍Java标准库的常用类和接口。掌握这些类的使用方法可以大大简化程序开发,如字符串处理、集合框架、IO操作等。 第6章《图形用户界面程序》是介绍使用Java编写图形用户界面(GUI)程序的方法。学习Swing和JavaFX等技术可以实现丰富、直观的用户界面。 第7章《输入输出流》是介绍Java的输入输出操作。学习文件读写、网络通信等知识可以实现数据的持久化和交互。 第8章《多线程并发编程》是介绍Java多线程编程的原理和方法。学习多线程操作可以充分利用多核处理器的优势,提高程序的并发性和响应性。 第9章《网络编程》是介绍使用Java进行网络通信的方法。学习Socket编程、HTTP协议等内容可以开发出基于网络的应用程序。 第10章《数据库编程》是介绍使用Java连接和操作数据库的方法。学习JDBC等技术可以实现与数据库的交互,进行数据持久化和查询。 通过学习这些章节的内容,可以全面掌握Java语言的基础知识和常用技术,为进一步深入学习和应用Java打下良好的基础。 ### 回答2: 第1章:认识Java语言 第1章介绍了Java语言的基本概念和特点。Java是一种跨平台的编程语言,被广泛应用于Web开发、移动应用开发等领域。Java具有简单易学的特点,使用了面向对象的编程思想,具有良好的可扩展性和可维护性。 第2章:Java语言基础 第2章主要介绍了Java语言的基本语法和常用的数据类型。包括变量、常量、运算符、流程控制语句等。同时还介绍了Java的数组、字符串和输入输出等相关知识。 第3章:面向对象程序设计之一 第3章介绍了面向对象程序设计的基本概念和常用的面向对象的特性。包括类、对象、继承、封装和多态等。同时还介绍了如何定义和使用类,以及如何实现各种面向对象的特性。 第4章:面向对象程序设计之二 第4章进一步深入介绍了面向对象程序设计的相关知识。包括接口、抽象类、继承和多态的高级应用,以及异常处理和内部类等。这些知识对于构建复杂的面向对象程序非常重要。 第5章:Java基础类库 第5章介绍了Java基础类库常用的类和方法。包括字符串、日期、时间、集合、文件和输入输出等类库的使用。这些类库为我们提供了丰富的功能,在Java编程非常实用。 第6章:图形用户界面程序 第6章介绍了Java图形用户界面编程的相关知识。包括Swing和AWT等GUI库的使用,以及事件处理和布局管理器等。通过学习这些知识,我们可以编写出漂亮、交互性强的图形界面程序。 第7章:输入输出流 第7章介绍了Java输入输出流的使用。包括字节流和字符流的概念、File类的使用以及文件读写和网络通信等。这些知识对于实现数据的读写和传输非常重要。 第8章:多线程并发编程 第8章介绍了Java多线程并发编程的相关知识。包括线程、线程同步和线程通信的概念,以及锁和条件的使用。同时还介绍了线程池的概念和使用,以及如何处理并发编程的常见问题。 第9章:网络编程 第9章介绍了Java网络编程的基本知识。包括Socket编程、TCP和UDP协议,以及HTTP协议的使用。通过学习这些知识,我们可以编写出具有网络功能的Java应用程序。 第10章:数据库编程 第10章介绍了Java数据库编程的相关知识。包括连接数据库、执行SQL语句、事务处理和数据查询等。通过学习这些知识,我们可以使用Java操作各种类型的数据库。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Abcdzzr

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值