Java异常 (Exception)以及异常的处理

Java异常 (Exception)以及异常的处理,第1张

异常:
    一.概述
        使用计算机语言进行项目开发的过程中,即使程序员把代码写的尽善尽美,在系统运行过程中仍然会遇到一些问题,因为
        很多问题不是靠代码能够避免的,比如:客户输入的数据格式、读取的文件是否存在、网络是否始终保持通畅等等

    二.异常
        1. 定义:
            在Java语言中,将程序执行中发生的不正常情况称为异常
        2. 分类:
            Error:(B1:demo_01)
                   Java虚拟机无法解决的严重问题。例如:JVM系统内部错误、资源耗尽等严重情况,
                   StackOverflowError 和 OutOfMemoryError。一般不编写针对性的代码进行处理
            Exception:其他因编程错误或偶然的外在因素导致的一般性问题,可以使用针对性的代码进行处理
                  分类:非受检异常
                       受检异常

    三.Throwable (B1:demo_02)
        1.java.lang.Throwable
            |-----java.lang.Error:一般不编写针对性的代码进行处理
            |-----java.lang.Exception:可以进行异常处理
                |-----编译时的异常(checked)受检异常
                    |-----IOException
                        |-----FileNotFoundException
                    |-----ClassNotFoundException
                |-----运行时的异常(unchecked)非受检异常
                    |-----NullPointerException
                    |-----ArrayIndexOutOfBoundsException
                    |-----ClassCastException
                    |-----NumberFormatException
                    |-----InputMismatchException
                    |-----ArithmeticException

    四.异常的处理

        在编写程序的时候,经常要在可能出现错误的地方加上检测的代码
            Java采用的异常处理机制,是将异常处理的程序代码集中在一起与正常的程序代码分开,使得程序简洁、优雅、有益于维护
            1.try-catch-finally:解决异常(B1:demo_03) 可以catch多个异常,finally可以省略
                1.1 try{ }catch(异常类型1 变量名1){处理异常的方式1}catch(异常类型2 变量名2){处理异常的方式2}finally{一定会执行的代码}
                1.2 在没有写finally的时候一旦try中的异常匹配到来某个catch,就进入catch异常处理,一旦处理完成,就跳出当前的try-catch,继续执行后面的代码
                1.3 catch中的异常类型,如果没有父子类关系,那么异常类型的排序没有影响,如果满足父子类关系,那么子类一定要排在父类的前面
                1.4 catch里 变量名.getMessage() / 变量名.printStackTrace()
                1.5 在try结构中声明的变量,在出了try以后就不能被调用了,如果需要用的话可以先定义到try结构外面
                1.6 使用try-catch-finally处理编译时异常,使得程序在编译时不再报错,但是运行时仍可能报错
                1.7 finally中声明的是一定会被执行的代码,例如try中有return、catch中也有异常也不影响finally里代码的执行
                1.8 什么时候才会写代码到finally里:需要自己关闭的物理连接(数据库连接、输入输出流、网络编程Socket)需要声明在finall
            2.throws+异常类型:上报异常(B1:demo_04)
                2.1 throws + 异常类型
                2.2 一旦方法体执行,遇到异常后就会在代码处生成对应异常类对象,此对象匹配到throws的异常类型后就会抛出异常对象。异常代码后面的代码就不再执行
                2.3 throws只是将异常抛给方法的调用者,并没有真正的将异常处理
        抓抛模型:
            1.抛:程序在执行的过程中,一旦出现异常,就会在异常代码处生成一个对应异常类的对象,并将此对象抛出,一旦抛出对象后,其后的代码就不再运行
                关于异常对象的产生:
                    ① 系统自动生成的异常对象
                    ② 手动的生成一个异常对象,并抛出(throw)
            2.抓:可以理解为异常的处理方式:① try-catch-finally ② throws
        自定义异常;
            1.继承于现有的异常结构:RuntimeException、Exception
            2.提供全局变量:serialVersionUID

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/905305.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-15
下一篇 2022-05-15

发表评论

登录后才能评论

评论列表(0条)

保存