• 异常处理系列教材 (五)- Java 自定义异常


    步骤1:创建自定义异常
    步骤2:抛出自定义异常
    步骤3:练习-自定义异常
    步骤4:答案-自定义异常

    示例 1 : 创建自定义异常

    一个英雄攻击另一个英雄的时候,如果发现另一个英雄已经挂了,就会抛出EnemyHeroIsDeadException
    创建一个类EnemyHeroIsDeadException,并继承Exception
    提供两个构造方法
    1. 无参的构造方法
    2. 带参的构造方法,并调用父类的对应的构造方法

    class EnemyHeroIsDeadException extends Exception{

         

        public EnemyHeroIsDeadException(){

             

        }

        public EnemyHeroIsDeadException(String msg){

            super(msg);

        }

    }

    示例 2 : 抛出自定义异常

    在Hero的attack方法中,当发现敌方英雄的血量为0的时候,抛出该异常
    1. 创建一个EnemyHeroIsDeadException实例
    2. 通过throw 抛出该异常
    3. 当前方法通过 throws 抛出该异常

    在外部调用attack方法的时候,就需要进行捕捉,并且捕捉的时候,可以通过e.getMessage() 获取当时出错的具体原因

    抛出自定义异常

    package charactor;

      

    public class Hero {

        public String name; 

        protected float hp;

        public void attackHero(Hero h) throws EnemyHeroIsDeadException{

            if(h.hp == 0){

                throw new EnemyHeroIsDeadException(h.name + " 已经挂了,不需要施放技能" );

            }

        }

        public String toString(){

            return name;

        }

         

        class EnemyHeroIsDeadException extends Exception{

             

            public EnemyHeroIsDeadException(){

                 

            }

            public EnemyHeroIsDeadException(String msg){

                super(msg);

            }

        }

          

        public static void main(String[] args) {

             

            Hero garen =  new Hero();

            garen.name = "盖伦";

            garen.hp = 616;

            Hero teemo =  new Hero();

            teemo.name = "提莫";

            teemo.hp = 0;

             

            try {

                garen.attackHero(teemo);

                 

            catch (EnemyHeroIsDeadException e) {

                // TODO Auto-generated catch block

                System.out.println("异常的具体原因:"+e.getMessage());

                e.printStackTrace();

            }

             

        }

    }


    更多内容,点击了解: https://how2j.cn/k/exception/exception-custom/337.html

  • 相关阅读:
    MATLAB 制作gif动画
    MATLAB求解浸润角
    MATLAB 解代数方程组
    空间直线同任意形状椭球交点
    空间旋转——四元数表示
    坐标系旋转 & 坐标点旋转
    展开循环来加速计算
    空间直线同球体交点求解
    变量初始化问题
    python 实现多个线程间消息队列传递,一个简单的列子
  • 原文地址:https://www.cnblogs.com/Lanht/p/12615509.html
Copyright © 2020-2023  润新知