错误消息";未报告的异常java.io.IOException;必须被抓住或宣布被扔出去; 错误:
java:15:未报告的异常java.io.IOException;必须是 抓住或 宣布被抛出 showfile(); ^java:78:未报告的异常java.io.IOException;必须被抓住或宣布为 扔 showfile(); ^ 我已经抛出了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
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
}
}
}