• java 异常来了


    异常就是Java程序在运行过程中出现的错误。

    异常的继承体系

    Throwable
       * Error
       * Exception
            * RuntimeException

    异常处理的两种方式
    * a:try…catch…finally
    * try catch
    * try catch finally
    * try finally
    * b:throws
    * try...catch的方式处理多个异常 但是第一个异常被捕获之后,就不再执行了

    A:编译期异常和运行期异常的区别
    * Java中的异常被分为两大类:编译时异常和运行时异常。
    * 所有的RuntimeException类及其子类的实例被称为运行时异常,其他的异常就是编译时异常

    * 编译时异常
    * Java程序必须显示处理,否则程序就会发生错误,无法通过编译
    * 运行时异常
    * 无需显示处理,也可以和编译时异常一样处理

    /**
    * * A:Throwable的几个常见方法
    * a:getMessage()
    * 获取异常信息,返回字符串。
    * b:toString()
    * 获取异常类名和异常信息,返回字符串。
    * c:printStackTrace()
    * 获取异常类名和异常信息,以及异常出现在程序中的位置。返回值void。
    * B:案例演示
    * Throwable的几个常见方法的基本使用
    */

    Throws 方法的处理

    /**
    * * A:throws的方式处理异常
    * 定义功能方法时,需要把出现的问题暴露出来让调用者去处理。
    * 那么就通过throws在方法上标识。
    * B:案例演示
    * 举例分别演示编译时异常和运行时异常的抛出
    * 编译时异常的抛出必须对其进行处理
    * 运行时异常的抛出可以处理也可以不处理
    * @throws Exception
    */

    finally 特点就是

    /**
    * * A:finally的特点
       * 被finally控制的语句体一定会执行
       * 特殊情况:在执行到finally之前jvm退出了(比如System.exit(0))
    * B:finally的作用
       * 用于释放资源,在IO流操作和数据库操作中会见到
       * C:案例演示
    * finally关键字的特点及作用
        *return语句相当于是方法的最后一口气,那么在他将死之前会看一看有没有finally帮其完成遗愿,如果有就将finally执行
    *后在彻底返回
    */

    class Finally_Demo{

    public static void main(String[] args) {
    try {
    System.out.println(10/0);
    } catch (Exception e) {
    System.out.println("除数为零了");
    //System.exit(0); //    这条语句是退出jvm虚拟机
    return;
    } finally {
    System.out.println("看看我执行了吗");
    }
    }

    }

    执行结果:

    除数为零了
    看看我执行了吗

    throw的概述
           * 在功能方法内部出现某种情况,程序不能继续运行,需要进行跳转时,就用throw把异常对象抛出。

       * C:throws和throw的区别
        * a:throws
       * 用在方法声明后面,跟的是异常类名
       * 可以跟多个异常类名,用逗号隔开
         * 表示抛出异常,由该方法的调用者来处理
     * b:throw
     * 用在方法体内,跟的是异常对象名
     * 只能抛出一个异常对象名
     * 表示抛出异常,由方法体内的语句处理

    自定义异常类

           1)首先创建自定义异常类,语法格式:自定义异常类名 extends Exception。

      2)在方法中通过关键字throw抛出异常对象。

      3)若是在当前抛出异常的方法中处理异常,可以用try-catch语句捕获并处理;若不是,在方法的声明处通过关键字throws指明要抛出给方法调用的异常。

      4)在出现异常方法的调用中捕获并处理异常。

    例子:

    class NumeratorIsZeroException extends Exception
    {
     public NumeratorIsZeroException(String msg)
     {
      super(msg);
     }
    }

    public class Number
    {
     public int divition(int iNum1,int iNum2)    throws NumeratorIsZeroException
     {
      if(0 == iNum2)
      {
       throw new NumeratorIsZeroException("分子不能为零。");
      }
     
      return (iNum1/iNum2);
     }

    }

    运行:

    public class Test
    {
     public static void main(String[] args)
     {
      Number num = new Number();
      try
      {
       System.out.println("商:" + num.divition(12,0));
      }
      catch(NumeratorIsZeroException e)
      {
       System.out.println(e.getMessage());
       e.printStackTrace();
      }
      catch(Exception e)
      {
       System.out.println(e.getMessage());
       e.printStackTrace();
      }
     }
    }

    运行结果:

    妃子不能为0
    com.heima.exception.NumeratorIsZeroException: 妃子不能为0
    at com.heima.exception.Number2.divition(Number2.java:6)
    at com.heima.exception.Test.main(Test.java:9)

  • 相关阅读:
    堆排序,C++模板编程
    洗牌程序的两种实现方法比较
    读取/保存xml文件的类(序列化/反序列化)
    [返回上一页,并且刷新]
    实现等级的存储过程sql
    C#实现WMI读取远程计算机信息【原】
    开源IT资产管理系统>OCS Inventory NG服务端
    xaf实现自定义只读参数
    How to show a Detail View via code
    15个最好的免费开源电子商务平台
  • 原文地址:https://www.cnblogs.com/lixiaowei395659729/p/7102500.html
Copyright © 2020-2023  润新知