Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 不能引发exception类型的异常,异常类型必须是Throwable的子类_Java_Exception_Throwable - Fatal编程技术网

Java 不能引发exception类型的异常,异常类型必须是Throwable的子类

Java 不能引发exception类型的异常,异常类型必须是Throwable的子类,java,exception,throwable,Java,Exception,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 kDe

我在其他问题中研究这个问题,但仍然没有弄明白 什么是可丢弃的。读了一些关于它的文章(它的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();
    }

使您的自定义异常扩展了可丢弃的
层次结构中的某些内容

比如说

// Exception here is java.lang.Exception, not the class from your example
public class MyException extends Exception {

    // ...

}

使您的自定义异常扩展了可丢弃的
层次结构中的某些内容

比如说

// Exception here is java.lang.Exception, not the class from your example
public class MyException extends Exception {

    // ...

}

在自定义类中,扩展了Throwable。它起作用了

 class Exception extends Throwable {
      //your code
  }

在自定义类中,扩展了Throwable。它起作用了

 class Exception extends Throwable {
      //your code
  }

您必须创建一个自定义的
异常
类,其中包含所需的
构造函数
,如下所示:

public class CustomException extends Exception {
    /* Optional: Include Serial UID */

    public CustomException(Throwable t) {
        super(t);
    }

    public CustomException(int pDen, int pMes, int kDen, int kMes) {
        /* Handle Info & Throw Exception */
    }

}
然后你可以抛出如下异常

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

您必须创建一个自定义的
异常
类,其中包含所需的
构造函数
,如下所示:

public class CustomException extends Exception {
    /* Optional: Include Serial UID */

    public CustomException(Throwable t) {
        super(t);
    }

    public CustomException(int pDen, int pMes, int kDen, int kMes) {
        /* Handle Info & Throw Exception */
    }

}
然后你可以抛出如下异常

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

请忽略建议您实现自己的
异常
类的答案。Java有自己的:
Java.lang.Exception
。只要使用它,并在需要时扩展它。拥有自己的
可丢弃的
,但不从标准
异常扩展的情况非常罕见。

请忽略建议您实现自己的
异常类的答案。Java有自己的:
Java.lang.Exception
。只要使用它,并扩展它,如果需要。拥有自己的
可丢弃的
,但不从标准
例外扩展的情况非常罕见

类异常及其子类是可丢弃的一种形式 这表示合理的应用程序可能希望满足的条件 接住

在大多数情况下,您的例外情况如下:

  • 算术异常
  • ArrayIndexOutOfBoundException
  • ClassNotFoundException
  • IOException
  • 没有任何异常
错误是Throwable的一个子类,表示存在严重问题 一个合理的应用程序不应该试图抓住

Exception
Error
都是
Throwable
的子类

如果您不仅需要捕获
异常
,而且还需要捕获
错误
,那么您应该使用
Throwable
。但是:

大多数此类错误都是异常情况。线程死亡错误, 虽然是“正常”条件,但也是错误的一个子类,因为大多数 应用程序不应该试图捕获它

如果您想捕获像
ThreadDeath
error这样的错误,您可以使用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.....");
        }
    }
}
类异常及其子类是可丢弃的一种形式 这表示合理的应用程序可能希望满足的条件 接住

在大多数情况下,您的例外情况如下:

  • 算术异常
  • ArrayIndexOutOfBoundException
  • ClassNotFoundException
  • IOException
  • 没有任何异常
错误是Throwable的一个子类,表示存在严重问题 一个合理的应用程序不应该试图抓住

Exception
Error
都是
Throwable
的子类

如果您不仅需要捕获
异常
,而且还需要捕获
错误
,那么您应该使用
Throwable
。但是:

大多数此类错误都是异常情况。线程死亡错误, 虽然是“正常”条件,但也是错误的一个子类,因为大多数 应用程序不应该试图捕获它

如果您想捕获像
ThreadDeath
error这样的错误,您可以使用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.....");
        }
    }
}

编写任何Java程序时避免此常见错误的要点:

  • 确保您没有为
    异常导入任何包
  • 如果您找到此项的任何导入,请将其删除
  • 您可以通过扩展异常类来实现
  • 或者从方法中抛出一个
    异常
  • 创建自定义消息时,请使用
    throw
    ,该消息将与方法上的throws关键字一起抛出

  • 编写任何Java程序时避免此常见错误的要点:

  • 确保您没有为
    异常导入任何包
  • 如果您找到此项的任何导入,请将其删除
  • 您可以通过扩展异常类来实现
  • 或者从方法中抛出一个
    异常
  • 创建自定义消息时,请使用
    throw
    ,该消息将与方法上的throws关键字一起抛出

  • 为什么要创建自己的异常类而不是使用例如IllegalArgumentException或IllegalStateException?为什么要创建自己的异常类而不是使用例如IllegalArgumentException或IllegalStateException?