美文网首页Java自学
Java自学-异常处理 自定义异常

Java自学-异常处理 自定义异常

作者: Wester西人 | 来源:发表于2019-10-17 11:46 被阅读0次

    Java 自定义异常

    示例 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();
          }
           
      }
    }
    

    相关文章

      网友评论

        本文标题:Java自学-异常处理 自定义异常

        本文链接:https://www.haomeiwen.com/subject/zcummctx.html