您的
fillDatacall
buffer.readLine(),它被声明为throw
IOException,但是您既没有捕获witin异常
fillData,也没有声明它可能被抛出。
最简单的解决方法是将的签名更改
fillData为:
public void fillData(String input, BufferedReader buffer) throws IOException
我也强烈建议 不要 关闭中的读者
fillData。通常,获取资源的相同代码应负责关闭资源。在这里,try-with-
resources语句最合适,所以在
read:
try (BufferedReader buffer = new BufferedReader(new InputStreamReader(in))) { String input = buffer.readLine(); fillData(input,buffer);}但是,即使这样也不是理想的-因为您早先打开了输入流。我 还
建议始终将编码传递给
InputStreamReader构造函数,否则它将使用平台默认编码。在Java
7+中,您可以使用
Files.newBufferedReader默认为UTF-8的版本。
另外:
read
声明抛出异常Exception
通常是一个坏主意;只抛出特定的异常- 捕获
Exception
的read
是一个坏主意; 只捕获特定的异常 read
失败后继续执行操作是个坏主意-in
为空,此后立即导致失败- 有一个名为
fileName
type 的参数是非常奇怪的int
。碰巧的是,您无论如何都没有使用它-这有什么意义?
基本上, 所有 异常处理和资源管理都需要大量工作。



