Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/345.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.io.IOException;必须被抓住或宣布被扔出去; 错误:_Java_Ioexception_Throws - Fatal编程技术网

错误消息";未报告的异常java.io.IOException;必须被抓住或宣布被扔出去; 错误:

错误消息";未报告的异常java.io.IOException;必须被抓住或宣布被扔出去; 错误:,java,ioexception,throws,Java,Ioexception,Throws,java:15:未报告的异常java.io.IOException;必须是 抓住或 宣布被抛出 showfile(); ^java:78:未报告的异常java.io.IOException;必须被抓住或宣布为 扔 showfile(); ^ 我已经抛出了java.io.IOException,但它仍然显示了这些错误 我的代码: import java.awt.*; 导入java.awt.event.*; 导入java.io.*; 类filecontent扩展框架实现ActionListener

java:15:未报告的异常java.io.IOException;必须是 抓住或 宣布被抛出

showfile(); ^java:78:未报告的异常java.io.IOException;必须被抓住或宣布为 扔

showfile(); ^

我已经抛出了java.io.IOException,但它仍然显示了这些错误

我的代码:
import java.awt.*;
导入java.awt.event.*;
导入java.io.*;
类filecontent扩展框架实现ActionListener
{
TextField t[]=新的TextField[4];
TextArea ta[]=新TextArea[4];
按钮提交;
小组p1;
filecontent()
{
setGUI();
setRegister();
showfile();
setTitle(“文件数据”);
setVisible(真);
设置大小(300300);
/*addWindowListener(新的WindowAdapter()
{ 
公共作废窗口关闭(WindowEvent we)
{ 
系统出口(0);
}
}); 
*/
}
void setGUI()
{
p1=新面板();
p1.设置布局(新网格布局(5,4,10,10));

对于(int i=0;i错误消息意味着调用
showfile()
的任何方法都必须声明它依次抛出
IOException
,或者调用必须位于捕捉
IOException
try
块内
,您不执行这两项操作;例如,您的
filecontent
构造函数既不声明
IOException
,也不包含
try

其目的是某个方法在某个地方应该包含一个
try
块,并捕获和处理此异常。编译器正试图强制您在某个地方处理此异常

顺便说一句,这个代码是(很抱歉这么直截了当)糟糕透了。你没有关闭任何打开的文件,
BufferedReader
总是指向第一个文件,即使你似乎试图让它指向另一个文件,循环包含一个接一个的错误,会导致各种异常,等等。当你编译这个文件时,它不会像你预期的那样工作。我认为你需要放慢速度往下一点

void showfile() throws java.io.IOException  <-----

您应该了解。

您的方法showFile()声明它可以引发IOException。由于这是一个选中的异常,对showFile()方法的任何调用都必须以某种方式处理该异常。一个选项是将对showFile()的调用包装在try-catch块中

 try {
     showFile();
 }
 catch(IOException e) {
    // Code to handle an IOException here
 }

异常会在堆栈中冒泡。如果调用方调用抛出已检查异常(如IOException)的方法,则它还必须捕获该异常,或者自己抛出该异常

在第一个块的情况下:

filecontent()
{
    setGUI();
    setRegister();
    showfile();
    setTitle("FileData");
    setVisible(true);
    setSize(300, 300);

    /*
        addWindowListener(new WindowAdapter()
        {
            public void windowClosing(WindowEvent we)
            {
                System.exit(0);
            }
        });
    */
}
您必须包含一个try-catch块:

filecontent()
{
    setGUI();
    setRegister();
    try {
        showfile();
    }
    catch (IOException e) {
        // Do something here
    }
    setTitle("FileData");
    setVisible(true);
    setSize(300, 300);

    /*
        addWindowListener(new WindowAdapter()
        {
            public void windowClosing(WindowEvent we)
            {
                System.exit(0);
            }
        });
    */
}
在第二种情况下:

public void actionPerformed(ActionEvent ae)
{
    if (ae.getSource() == submit)
    {
        showfile();
    }
}
无法从此方法引发IOException,因为其签名由接口确定,因此必须在以下范围内捕获异常:

public void actionPerformed(ActionEvent ae)
{
    if(ae.getSource()==submit)
    {
        try {
            showfile();
        }
        catch (IOException e) {
            // Do something here
        }
    }
}
记住,showFile()方法正在抛出异常;这就是“throws”关键字指示该方法可能抛出该异常的原因方法是抛出,则无论该方法必须捕获的代码调用什么,或者该方法本身通过在方法签名中添加相同的抛出IOException来显式抛出异常(如果允许的话)


如果该方法正在重写接口或超类中定义的方法签名,而该接口或超类没有声明该方法可能引发该异常,则不能将其声明为引发异常。

当被调用方引发异常时,即void showfile()抛出java.io.IOException调用方应处理它或再次抛出它


还要学习命名约定。类名应该以大写字母开头。

^^这是一个我真的怀疑这是cargo cult编程的教科书示例。我调用了showfile()在try-catch-block中,这个问题已经解决了。但现在当我运行它时,它显示了filenotfoundexception。@AkashPatel:这可能是因为您在文件读取器中传递了错误的文件路径。下面是我创建FileReader对象的代码。for(int I=0;事实上,您说它是java.io.IOException节省了我的时间。我正在导入java.realm
public void actionPerformed(ActionEvent ae)
{
    if (ae.getSource() == submit)
    {
        showfile();
    }
}
public void actionPerformed(ActionEvent ae)
{
    if(ae.getSource()==submit)
    {
        try {
            showfile();
        }
        catch (IOException e) {
            // Do something here
        }
    }
}