0
public void useSkill(Champion target, int skillIndex, boolean enemy) throws UtilitiesException {
    if (champSkills[skillIndex].getManaCost() > this.currentMana) {
        throw new RequirmentNotMetException("Not Enough mana");
    }

我想抛出一个带有“法力不足”消息的requirmentNotMetexception(哪个)。extendsutilitiesException

Exception in thread "main" java.lang.Error: Unresolved compilation problem: 
    Unhandled exception type UtilitiesException

    at eg.edu.guc.lol.game.champions.Tank.useSkill(Tank.java:27)
    at eg.edu.guc.lol.game.champions.asfasf.main(asfasf.java:33)

我想使用例外来向用户展示冠军没有法力,而不是使用 if/else 语句检查冠军的法力并打印没有足够的法力。

4

3 回答 3

0

你的useSkill方法看起来不错。它在方法签名的 throws 子句中声明了异常类型,因此问题可能出在调用此方法的位置。在我看来,您遇到了错误运行时,这可能表明您在更改签名后尚未使用 Tank 类重新编译所有类。尽管如此,您还是需要在使用该useSkill方法的地方捕获异常,或者通过声明这些方法来传递它以抛出该异常类型。

于 2013-03-30T17:35:41.173 回答
0

调用堆栈中的某个人必须处理RequirmentNotMetException,或者调用堆栈上的每个方法都必须声明它抛出异常(或父级),或者异常必须扩展RuntimeException。显然,您的主要方法没有声明为抛出它,我不希望它这样做。因此,检查调用链,确定谁应该处理异常,让该方法处理它,并让介于两者之间的所有内容都声明为抛出异常。

于 2013-03-30T17:37:36.890 回答
-1

要么您没有导入 UtilitiesException,要么您的 UtilitiesException 类有错误。

于 2013-03-30T17:35:59.157 回答