当前位置: 首页 > 知识库问答 >
问题:

处理异常溢出异常不会在相应try语句的正文中引发

栾耀
2023-03-14

这是我的堆栈代码的数组实现:

public class ArrayStack2{ 
    private final int DEFAULT_SIZE=10;
    public int tos;
    Object[] array;
    public ArrayStack2(){
        array   =new Object[DEFAULT_SIZE];
            tos=-1;
    }
    public void push(Object e){
        try{
            array[tos+1]=e;
            tos++;
            }
        catch(OverFlowException e1){
            e1.print();
        }

    }  

这是OverFlowException类:

public class OverFlowException extends Exception{
    public OverFlowException(){
        super();
    }
    public OverFlowException(String s){
        super(s);

    }
    public void print(){
        System.out.println("OverFlow");
    }
}  

当我运行这个编译器时给出错误“exception OverFlowException is never thrown in body of response try statement”
然后我意识到我没有包含检查数组是否为isFull()的部分。
我的问题是我在ArrayStack2类中有isFull()方法,以及如何从OverFlowException类中调用它。
请帮助我找到一种方法来纠正这个异常问题

共有1个答案

顾宸
2023-03-14

只有当用户定义的异常扩展了RuntimeException时,它才是未检查的异常。

在您的情况下,overflowexception是一个检查过的异常,编译器会检查其可能性。如果不可能抛出此检查异常,那么就没有处理检查异常的意义,编译器将其威胁为不可达的catch块。

在JAVA中,任何不可访问的内容都将导致编译时错误。

try {
    System.out.println("hello");
} catch (IOException e) {
    e.printStackTrace();
}
Unreachable catch block for IOException. 
This exception is never thrown from the try statement body

我的问题是,我在ArrayStack2类中有IsFull()方法,我如何从OverflowException类调用它。

Do it in reverse order意味着根据您的条件从ArrayStack2类中的IsFull()方法抛出OverflowException类的新对象。

 类似资料:
  • 我已经看到过一个类似的问题,但是我还没有找到一个解决方案,因为在我的例子中,放入try子句的函数实际上会引发一个异常。 在my try块中,psv main调用方法,该方法打印2并引发名为myexc3的异常。然后,这个异常应该由处理,它应该打印3等等。但代码实际上并不编译: 异常MyExc3从不在相应try语句的正文中抛出 这是为什么?

  • 我不是太笨,不会意识到“try catch”中的代码不能抛出异常。但是我被困在这里,因为我完全从书中复制了代码,所以它在出版时肯定是正确的。这让我想知道代码是否不能再编译了,因为它已经过时了?我意识到这个问题的性质可能会冒犯在座的一些人。如果是的话,请不要在严厉的斥责中过于严厉。 我得到了一个错误: ./streamcopier.java:13:错误:异常IOException从不在相应try语句

  • 问题内容: 我在Java中进行异常处理时遇到问题,这是我的代码。尝试运行以下行时出现编译器错误:。错误是: 永远不会在相应的try语句的主体中引发MojException异常 这是代码: 这是MojException的代码: 谁能帮我这个? 问题答案: try语句中的catch块需要 精确 捕获-block 内的代码 可能 抛出的异常(或该异常的超类)。 您想做的是这样的: 这将导致编译器错误,因

  • 在我更好地学习Java的过程中,我一直试图理解异常处理。我不明白为什么下面的代码不能编译。 编译器消息为:

  • 考虑来自Java文档的以下代码。 根据Java文档, 在示例readFirstLineFromFile中,如果从try块和try with resources语句抛出异常,则方法readFirstLineFromFile抛出从try块抛出的异常;禁止从try with resources块引发的异常。 另一方面,也提到了 由于BufferedReader实例是在try with resource语

  • **程序需要做的事情:** 当它运行时接受两个命令行参数,否则抛出一个错误。该规则包含以下要求:“如果没有命令参数,则执行I/O错误处理。” 问题是,每次尝试使用I/O异常捕获时,都会收到以下错误: 无法访问IOException得catch块.此异常从不从try语句正文引发 我从Eclipse获得的快速修复建议: 1。删除Catch条款2。用close替换Catch子句 下面是我的代码: nul