java - IOException,必须捕获或声明抛出

标签 java android exception ioexception

此代码来自以下链接。我尝试运行它,但出现以下错误:

Thelink

D:\Android_Dosyalar\Proje\TextToArray\app\src\main\java\chessactivetexttoarray\com\texttoarray\MainActivity.java 错误:(40, 21) 错误:未报告异常 IOException;必须被捕获或宣布被扔出 错误:(41, 22) 错误:未报告异常 IOException;必须被捕获或宣布被扔出 错误:(42, 21) 错误:未报告异常 IOException;必须被捕获或宣布被扔出 错误:任务“:app:compileDebugJavaWithJavac”执行失败。

Compilation failed; see the compiler error output for details.

可能出了什么问题。以下部分也用红色下划线表示。 安卓新手。新手级别。 谢谢大家。 问候

            br.close();
            isr.close();
            is.close();

Read and split text file into an array - Android

import android.content.res.AssetManager;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.widget.Toast;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        AssetManager manager;
        String line = null;
        List<String[]> xyzList = new ArrayList<String[]>();
        String[][] xyz;
        InputStream is = null;
        InputStreamReader isr = null;
        BufferedReader br = null;
        try {
            manager = getAssets();
            is = manager.open("C:\\Users\\serhat\\Copy\\satranc\\Akdag_Reportaj\\dan_akdag.pgn");
            isr = new InputStreamReader(is);
            br = new BufferedReader(isr);
               while ((line = br.readLine()) != null) {
                xyzList.add(line.split(" "));
            }
            xyz = (String[][]) xyzList.toArray();
        } catch (IOException e1) {
             Toast.makeText(getBaseContext(), "Problem!",     Toast.LENGTH_SHORT).show();
        } finally {

            br.close();
            isr.close();
            is.close();
        }




    }


}

最佳答案

close 方法可能会引发异常。所以他们需要捕获他们。

} finally {
    try {
        br.close();
        isr.close();
        is.close();
    } catch(IOException e) {
        e.printStackTrace();
    }
}

您的代码中还存在另一个问题,该问题将导致其在运行时失败。您正在尝试使用 AssetManager 打开 Windows 计算机上的文件,而不是手机上的文件。将文件移动到项目的 Assets 文件夹中,然后更改

is = manager.open("C:\\Users\\serhat\\Copy\\satranc\\Akdag_Reportaj\\dan_akdag.pgn");

is = manager.open("dan_akdag.pgn");

关于java - IOException,必须捕获或声明抛出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33856591/

相关文章:

java - 使访问数据库表线程安全的函数的最佳方法?

android - 显示存储为列表中的可绘制对象的图像库

android - 无法转换为 DatabaseReference

c# - JSON 字符串上的字符串 'Input string was not in a correct format' 异常

java - 审计 Java : system to detect exceptions thrown/caught (aop? )

c++ - 在 C++11 中,如何在捕获到信号时立即离开函数?

java - Deque 删除不会引发 ConcurrentModificationException

javascript - java或javascript中具有t格式转换的日期时间dd mmm yyyy hh mm ss

java - 不断变化的JSlider,用户交互事件?

java - 如何创建带有阴影和垂直项目的 CardView