zoukankan      html  css  js  c++  java
  • Exection throws和throw

    抛出异常 throw

    假如在我们编写一个有参方法的时候,我们需要考虑到当调用者调用的时候,会传一些非法参数进来,我们需要对传入参数进行一个合法性判断,如果传入参数是非法的,我们就应该告诉调用者,必须传入一个合法的参数,这时候我们需要使用抛出异常的方式来告诉调用者。

    比如以下代码

        public Integer devision(Integer i){
            int j=1/i;
            return j;
        }

    当调用者传入的参数为0的时候,那么JVM肯定会抛出算数异常,Exception in thread "main" java.lang.ArithmeticException: / by zero
    所以我们要让调用者不能传非法参数进来。


    那么我们可以通过下面的方法来解决

    我们来看JDKAPI ArithmeticException的这个构造方法
    这里写图片描述

    1. 创建一个异常对象。封装一些提示信息(信息可以自己编写)。
    2. 需要将这个异常对象告知给调用者。怎么告知呢?怎么将这个异常对象传递到调用者处呢?通过关键字throw就可以完成。throw 异常对象;

    我们通过下面这段代码演示

       public static Integer devision(Integer i){
            if(i==0){
                throw new ArithmeticException("除数不能为0");
            }
            int j=1/i;
            return j;
        }

    声明异常throws

    这个关键字的作用是告诉调用者,如果方法内通过throw抛出了异常,调用者你必须去处理
    这个关键字必须写在方法上,声明异常格式

    修饰符 返回值类型 方法名(参数) throws 异常类名1,异常类名2… {   }

    我们通过下面这段代码演示

     public static Integer devision(Integer i)throws Exception{
            if(i==0){
                throw new ArithmeticException("除数不能为0");
            }
            int j=1/i;
            return j;
        }

    这就告诉了调用者,我这里可能会出现异常,你必须去处理

    但是如果抛出的异常是,不是继承RuntimeExection类的话,那么就不强制调用者去处理,如果不是继承RuntimeExection那么就强制调用者去处理

    官方API解释

    这里写图片描述


    运行时期异常的特点:
    - 方法中抛出运行时期异常,方法定义中无需throws声明,调用者也无需处理此异常
    - 运行时期异常一旦发生,需要程序人员修改源代码.

  • 相关阅读:
    《C++ Primer》读书笔记—第十章 泛型算法
    悬浮在activity上的activity对话框
    android 双向滑动 稍加改进,可做成QQHD效果
    android String.format
    使用ttf字体
    UI界面设计准则
    scrollview gn gridview混合使用问题
    android Activity 之间传递复杂对象
    android程序获取手机imei方法
    android 自定义对话框
  • 原文地址:https://www.cnblogs.com/aotemanzhifu/p/9192429.html
Copyright © 2011-2022 走看看