zoukankan      html  css  js  c++  java
  • Java(五)

    异常


    一.行为的意外结果可以分为两类
    可以处理的意外结果称为异常(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的构造方法

  • 相关阅读:
    抽象理解切片递归神经网络(SRNN)的结构
    通俗点讲解 RNN、LSTM、GRU
    2019年最强的自然语言处理模式BERT
    LSTM训练机器理解人类交流的进展
    人工智能自动写作软件基于通用预训练方法MASS
    如何理解模拟计算机“大脑”所形成的神经网络
    人工智能自动写作软件2.0时代
    解开神秘的面纱,人工智能算法到底是什么
    人工智能算法有哪些?启发式算法原理
    浅谈人工智能神经网络与工业自动化
  • 原文地址:https://www.cnblogs.com/ch123456/p/6980244.html
Copyright © 2011-2022 走看看