zoukankan      html  css  js  c++  java
  • Java基础——异常处理

    异常处理:
    java.lang.Throwable
      Error:错误,程序终止运行
      Exception:异常,在编写程序时,考虑到对这些异常的处理
        1.编译时异常:(javac.exe命令时,抛出的异常)
        2.运行时异常:(java.exe命令时,抛出的异常)

    常见的运行时异常:
      1.数组下标越界
      2.空指针

    处理Exception异常:抓抛模型
      1.抛:当我们执行代码时,一旦出现异常,就在异常代码处生成一个对应的异常类型的对象,并将此对象抛出(自动抛出/手动抛出
        一旦将此异常对象抛出,程序终止执行
        此异常类的对象抛给方法的调用者
      2.抓:抓住上一步抛出异常类的对象,如何抓,即异常处理方式。
      异常处理方式一:try-catch-finally (右键 soundwith)

    try{
        //可能出现异常的代码
    }catch(Exception1 e1){
        //处理的方式1
    }catch(Exception2 e2){
        //处理方式2
    }finally{
        //一定要执行的代码
    }

    注:1.try内声明的变量,类似于局部变量,出了try{}语句,就不能被调用
      2.finally语句是可选的
      3.catch语句内部是对异常对象的处理
        getMessage();
        printStackTrace();
      4.有多个catch语句,try中抛出的异常类对象从上往下去匹配catch中的异常类的类型,一旦满足,就执行该catch中的语句,执行完后就跳出,其余catch语句不再执行
      5.异常处理之后,其后代码继续执行
      6.catch中的异常类型如果是“并列”关系,孰上孰下无所谓
        但是若catch中的异常类型是“包含”关系,必须将父类的放在上面进行处理,否则报错
      7.finally中存放的是一定会被执行的代码,不管try catch中是否仍有异常未被处理,以及是否有return返回值
      8.try-catch是可以嵌套
    3.对于运行时异常,可以不进行显式的处理
    但是对于编译时异常,必须进行显式的处理


      异常处理方式二:在方法的声明处,显式的抛出该异常对象的类型

    public void method() throws FileNotFoundException, IOException{
        FileInputStream fis = new FileInputStream(new File("hello.txt"));
        int b;
        while((b = fis.read()) != -1){
        System.out.print((char)b);
        }
        fis.close();
    }

      当在此方法的内部出现异常的时候,会抛出一个异常类的对象,抛给方法的调用者
      异常的对象可以逐层的向上抛,直至main中,当然,在抛的过程中,可以用try-catch-finally进行处理

    Java的异常处理:抓抛模型
      1.抓:异常的处理,有两种方式(1.try-catch-finally, 2.throws+异常的类型
      2.抛:一旦执行过程中,出现异常,会抛出一个异常类的对象。(自动抛出 vs 手动抛出(throw + 异常类的对象)
      手动抛出异常:throw RuntimeException("运行时间过长");(异常类,既可以是现成的异常类,也可以是自己创建的异常类)
      若是RuntimeException,可以不显式的处理
      若是Exception,必须要显式的处理
      自定义的异常类
        1.自定义的异常类继承现有的异常类
        2.提供一个序列号,提供几个重载的构造器
      注:子类重写的父类的方法,其throws的异常类型只能小于或等于被重写的父类的方法的异常类型

  • 相关阅读:
    Swoole 学习笔记 03
    MySQL 索引概念
    MySQL使用存储过程创建百万级别测试数据
    MySQL 慢日志查询的设置
    Hyper中的 Request和Response
    PHPStorm deployment 工具的使用
    Hyperf 命令行
    Hyperf 事件机制
    Hyperf jsonrpc 服务的搭建
    PHPstorm的使用
  • 原文地址:https://www.cnblogs.com/SkyeAngel/p/7801233.html
Copyright © 2011-2022 走看看