• 异常


    一.行为的意外结果可以分为两类
        可以处理的意外结果称为异常(Exception)
        处理不了的意外结果称为错误(Error)
      
      异常是一中特殊的对象,类型为java.lang.Exception或器子类
      
     二.处理
      1.捕获异常
       try-->执行可能产生异常的代码
       catch-->捕获异常
       finally-->无论是否发生异常,代码总能执行
      2.声明异常
       throws-->声明方法可能要抛出的各种异常
      3.抛出异常
       throw-->手动抛出异常

     三.try-catch
       情况一:
          try(无异常)     catch     try-catch后代码
            |                           |
             ---------------------------
          
       情况二:
          try(有异常)                    catch ---->try-catch后代码
            |                                |
             -->产生异常对象-->异常类型匹配-->

       情况三:
           try(有异常)   catch ---->try-catch后代码
             |
              --产生异常对象-->异常类型不匹配-->代码中断

     四.在catch块中处理异常
        1.加入自定义处理信息
          System.err.ptintln(“自定义内容”)
        2.调用方法输出异常信息
          e.printStackTrace();
        3.异常对象常用方法
          String getMessage();
          *返回异常信息描述字符串是printStackTrace()输出信息一部分

     五.Java异常机制
        1.代码运行到可能出现异常时,由程序或Java抛出异常对象,异常对象会记录相关信息
        2.异常对象抛出后,会去寻找异常处理的相关代码(catch),如果找到异常结束
        3.如果未找到,异常对象会继续上抛,寻找异常处理代码
        4.如果到main还未找异常抛给到异常处理代码,就会有main将异常抛给虚拟机
        5.异常抛出的每一层代码都会中断

     六.常见异常类型

            异常类型                                  说明
           Exception                        异常层次结构的父类
       ArithmeticException                  算术错误情形,如以0做除数
    ArrayIndexOutBoundsException            数组下标越界
      NullPointerException                  尝试访问null对象成员
     ClassNotFoundException                 不能加载所需类
    IllegalArgumentException                方法接收到非法参数
       ClassCastException                   对象强制类型转换出错
     NumberFormatException                  数字格式化转换异常,如把“ABC”转为数字

     七.finally
       1.是否发生异常都会执行finally块中的代码
       2.唯一不执行的情况:System.exit(1);

     八.存在return的try-catch-finally块
       try--->产生异常对象--->异常类型匹配--->进入catch--->

       执行finally--->执行return退出方法

     九.try、catch、finally使用规则
        try{
         //必须出现,且只能出现一次
        }catch{
         //可以出现0~n次,如果没有catch就必须有finally
        }finally{
         //可以出现0~1次
        }
        
     十.多重catch块
       1.排列catch语句顺序:先子类后父类
       2.发生异常时按顺序逐个匹配
       3.只执行第一个与异常类型匹配的catch语句

     十一.Java异常分类
       1.运行时异常:在代码编译的时候不会进行检测,在代码运行时的过程中产生异常,

         RuntimeException及其子类都属于运行时异常,
         还有ArithmeticException、NullPointeException、NumberFormatException
       2.检查异常/检测异常:在代码编译的时候显示必须处理,才能通过编译器的编译,

         如:SQLException、ClassNoFoundException

     十二.throw、throws
       1.throws声明某个方法可能抛出的各种异常
       2.throws可以让检查异常通过编译器的编译,但没有真正解决异常
       3.throw手动抛出异常,并可以定义异常的信息
       4.throws可以声明多个异常,多个异常之间用逗号隔开
         
     十三.自定义异常
       1.写一个异常类,继承Exception
       2.手动实现Exception的构造方法

  • 相关阅读:
    CSU 1333 Funny Car Racing
    FZU 2195 检查站点
    FZU 2193 So Hard
    ZOJ 1655 FZU 1125 Transport Goods
    zoj 2750 Idiomatic Phrases Game
    hdu 1874 畅通工程续
    hdu 2489 Minimal Ratio Tree
    hdu 3398 String
    洛谷 P2158 [SDOI2008]仪仗队 解题报告
    POJ 1958 Strange Towers of Hanoi 解题报告
  • 原文地址:https://www.cnblogs.com/shuaiwenxin/p/6986946.html
Copyright © 2020-2023  润新知