zoukankan      html  css  js  c++  java
  • 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)

  • 相关阅读:
    这个站不错
    Using YQL as crawler for Javascript
    xmldatabase domdatabase
    语法分析器自动生成工具一览
    Ruby, Concurrency, and You
    图书影印
    数据可视化我在寻找一款类似vfp或是access这样自带可视化风格的数据库或是键盘数据库
    金融工程
    joke
    在ubuntu上安装全文搜索中文分词Coreseek/sphinx及和Rails集成 转载
  • 原文地址:https://www.cnblogs.com/lixiaowei395659729/p/7102500.html
Copyright © 2011-2022 走看看