zoukankan      html  css  js  c++  java
  • 异常

    行为的意外结果可以分为两类:

        可以处理的意外结果称为异常(Exception)

        处理不了的意外结果称为错误(Error)
      
      异常是一种特殊的对象,类型为java.lang.Exception或器子类
      

     java的异常处理的5个关键字:

      a.捕获异常

       try-->执行可能产生异常的代码

       catch-->捕获异常

       finally-->无论是否发生异常,代码总能执行

      b.声明异常

       throws-->声明方法可能要抛出的各种异常

      c.抛出异常

       throw-->手动抛出异常

    使用try-catch块捕获异常:

       情况一:正常

          try(无异常)     catch     try-catch后的代码段

            |                    |    |

             ---------------------------
          
       情况二:出现异常

          try(有异常)               catch ---->try-catch后的代码段

            |                                |      |

            -->产生异常对象-->异常类型匹配-->程序继续进行

       情况三:异常类里不匹配

           try(有异常)      catch ---->try-catch后的代码段

             |           |        | 

            -->产生异常对象-->异常类型不匹配-->异常类型不匹配,程序中断运行


     在catch块中处理异常:

      a.加入自定义处理信息

            System.err.ptintln("自定义内容")

      b.调用方法输出异常信息

            e.printStackTrace();

      c.异常对象常用方法

            void printStackTrace():输出异常的堆椎信息

            String getMessage():返回异常信息描述字符串是printStackTrace()输出信息一部分


     Java异常机制:

      a.代码运行到可能出现异常时,由程序或Java抛出异常对象,异常对象会记录相关信息

      b.异常对象抛出后,会去寻找异常处理的相关代码(catch),如果找到异常结束

      c.如果未找到,异常对象会继续上抛,寻找异常处理代码

      d.如果到main还未找异常抛给到异常处理代码,就会有main将异常抛给虚拟机

      e.异常抛出的每一层代码都会中断


     常见异常类型:

        异常类型                                    说明

    Exception                              异常层次结构的父类

    ArithmeticException                     算术错误情形,如以0做除数

    ArrayIndexOutBoundsException         数组下标越界

    NullPointerException                     尝试访问null对象成员

    ClassNotFoundException                  不能加载所需类

    IllegalArgumentException                 方法接收到非法参数

    ClassCastException                      对象强制类型转换出错

    NumberFormatException                  数字格式化转换异常,如把"ABC"转为数字

    finally:
      是否发生异常都会执行finally块中的代码

      唯一不执行的情况:System.exit(1);


    存在return的try-catch-finally块:

      try--->产生异常对象--->异常类型匹配--->进入catch--->执行finally--->执行return退出方法


    try、catch、finally使用规则:

        try{

         //必须出现,且只能出现一次

        }catch{

         //可以出现0~n次,如果没有catch就必须有finally

        }finally{

         //可以出现0~1次

        }
        

    多重catch块:

      a.排列catch语句顺序:先子类后父类

      b.发生异常时按顺序逐个匹配

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

    try--->产生异常对象--->异常类型1不匹配--->异常类型2匹配-->进入catch--->catch-->try-catch后的代码段


    Java异常分类:

      a运行时异常:在代码编译的时候不会进行检测,在代码运行时的过程中产生异常,

         RuntimeException及其子类都属于运行时异常,

         还有ArithmeticException、NullPointeException、NumberFormatException

      b.检查异常/检测异常:在代码编译的时候显示必须处理,才能通过编译器的编译,

         如:SQLException、ClassNoFoundException


    throw、throws:

      a.throws声明某个方法可能抛出的各种异常

      b.throws可以让检查异常通过编译器的编译,但没有真正解决异常

      c.throw手动抛出异常,并可以定义异常的信息

      d.throws可以声明多个异常,多个异常之间用逗号隔开
         

     自定义异常:

      写一个异常类,继承Exception

      手动实现Exception的构造方法

  • 相关阅读:
    生产者消费者模式 (在已有线程下不断生产不断消费)
    Spring boot Spring cloud 框架搭建
    个人见解
    加入博客园!
    sqlserver 工具
    slqserver 拆分函数
    sqlserver 自定义函数与存储过程的区别
    sqlserver row_number() over() 理解
    C# Newtonsoft.Json JObject移除属性
    PropertyInfo 简单用法
  • 原文地址:https://www.cnblogs.com/yiui/p/6912022.html
Copyright © 2011-2022 走看看