猿问

不能抛出Exception类型的异常,异常类型必须是Throwable的子类

我在其他问题中搜索了这个问题,但仍然没有弄清楚 Throwable 的确切含义。阅读了一些关于它的文章(它的 superclas bla bla bla),但仍然不知道如何实现它。忘了说我是 Java 新手。任何建议将不胜感激:D


这是异常类:


class Exception {

private int pDen;

private int pMes;

private int kDen;

private int kMes;


public Exception(int pDen, int pMes, int kDen, int kMes) {

    super();

    this.pDen = pDen;

    this.pMes = pMes;

    this.kDen = kDen;

    this.kMes = kMes;

}

public void message()

{

    System.out.println("Isklucok");

}

public void promena()

{

    int tmpDen = 0;

    int tmpMes = 0;

    tmpDen = pDen;

    pDen = kDen;

    kDen = tmpDen;

    tmpMes = pMes;

    pMes = kMes;

    kMes = tmpMes;

}

}


这是我在其他类中运行的代码,我应该在其中捕获抛出的异常。


try {

        if(pMes > kMes)

        {

            throw new Exception(pDen,pMes,kDen,kMes);

        }

        else if(pMes == kMes)

            if(pDen > kDen)

            {

                throw new Exception(pDen,pMes,kDen,kMes);

            }

    }

    catch(Exception e)

    {

        e.message();

        e.promena();

    }


德玛西亚99
浏览 1074回答 3
3回答

慕尼黑8549860

使您的自定义异常从Throwable层次结构中扩展某些内容。例如// Exception here is java.lang.Exception, not the class from your examplepublic class MyException extends Exception {    // ...}

精慕HU

Exception 类及其子类是 Throwable 的一种形式,它指示合理的应用程序可能想要捕获的条件。在大多数情况下,您的例外情况将是以下之一:算术异常ArrayIndexOutOfBoundException类未找到异常IO异常NoSuchMethodException ...Error 是 Throwable 的一个子类,它指示合理的应用程序不应尝试捕获的严重问题。这两个Exception和Error是的子类Throwable。如果您不仅需要捕获Exceptions但是Errors,您应该使用Throwable. 但:大多数此类错误是异常情况。ThreadDeath 错误虽然是“正常”情况,但也是 Error 的一个子类,因为大多数应用程序不应该尝试捕获它。如果你想捕捉像ThreadDeath错误这样的事情,你可以使用 Throwable。这可能是一种非常罕见的情况。在您的示例中,如果您只想检查数字,则可以使用以下内容:public static void check(int pDen, int pMes, int kDen, int kMes) {    if (pMes > kMes) {        throw new IllegalArgumentException ("Your message.....");    } else if (pMes == kMes) {        if (pDen > kDen) {            throw new IllegalArgumentException ("Your message.....");        }    }}

米脂

请忽略建议您实现自己的Exception类的答案。Java 有它自己的:java.lang.Exception. 只需使用它,并在需要时扩展它。拥有自己的Throwable. 但不是从标准扩展的Exception情况非常罕见。
随时随地看视频慕课网APP

相关分类

Java
我要回答