Java 自定义异常
示例 1 : 创建自定义异常
一个英雄攻击另一个英雄的时候,如果发现另一个英雄已经挂了,就会抛出EnemyHeroIsDeadException
创建一个类EnemyHeroIsDeadException,并继承Exception
提供两个构造方法无参的构造方法
带参的构造方法,并调用父类的对应的构造方法classEnemyHeroIsDeadExceptionextendsException{ publicEnemyHeroIsDeadException(){ } publicEnemyHeroIsDeadException(String msg){ super(msg); } }
示例 2 : 抛出自定义异常
在Hero的attack方法中,当发现敌方英雄的血量为0的时候,抛出该异常创建一个EnemyHeroIsDeadException实例
通过throw 抛出该异常
当前方法通过 throws 抛出该异常
在外部调用attack方法的时候,就需要进行捕捉,并且捕捉的时候,可以通过e.getMessage() 获取当时出错的具体原因
package charactor;
publicclassHero{ public String name;
protectedfloat hp;
publicvoidattackHero(Hero h)throws EnemyHeroIsDeadException{
if(h.hp == 0){
thrownew EnemyHeroIsDeadException(h.name + " 已经挂了,不需要施放技能" );
} }
public String toString(){
return name;
}
classEnemyHeroIsDeadExceptionextendsException{ publicEnemyHeroIsDeadException(){
}
publicEnemyHeroIsDeadException(String msg){
super(msg);
} }
publicstaticvoidmain(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(); }
} }