IOException,必须被捕获或声明为抛出
IOException, must be caught or declared to be thrown
此代码来自下方link。我尝试 运行 它但出现以下错误:
Thelink
D:\Android_Dosyalar\Proje\TextToArray\app\src\main\java\chessactivetexttoarray\com\texttoarray\MainActivity.java
Error:(40, 21) 错误:未报告的异常 IOException;必须被抓住或宣布被抛出
Error:(41, 22) 错误:未报告的异常 IOException;必须被抓住或宣布被抛出
Error:(42, 21) 错误:未报告的异常 IOException;必须被抓住或宣布被抛出
Error:Execution 任务“:app:compileDebugJavaWithJavac”失败。
Compilation failed; see the compiler error output for details.
可能是哪里出了问题。以下部分也用红色下划线标出。
android 的新手。新手级别。
谢谢大家。
问候
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();
}
}
}
您需要捕获关闭方法可能抛出的 IOException:
例如
finally {
try {
br.close();
isr.close();
is.close();
} catch (IOException e) {
// dosomething
}
}
close
方法抛出 IOException。 close
方法周围没有 try/catch 块。您的代码应如下所示:
...
} finally {
try {
br.close();
isr.close();
is.close();
} catch(IOException ex) {
ex.printStackTrace();
}
}
关闭方法可以抛出异常。所以他们需要抓住他们。
} finally {
try {
br.close();
isr.close();
is.close();
} catch(IOException e) {
e.printStackTrace();
}
}
您的代码中还有一个问题会导致它在 运行 时失败。您正在尝试使用 AssetManager
打开 windows 计算机上的文件,而不是 phone。将文件移动到项目的资产文件夹中,然后更改
is = manager.open("C:\Users\serhat\Copy\satranc\Akdag_Reportaj\dan_akdag.pgn");
到
is = manager.open("dan_akdag.pgn");
此代码来自下方link。我尝试 运行 它但出现以下错误:
Thelink
D:\Android_Dosyalar\Proje\TextToArray\app\src\main\java\chessactivetexttoarray\com\texttoarray\MainActivity.java Error:(40, 21) 错误:未报告的异常 IOException;必须被抓住或宣布被抛出 Error:(41, 22) 错误:未报告的异常 IOException;必须被抓住或宣布被抛出 Error:(42, 21) 错误:未报告的异常 IOException;必须被抓住或宣布被抛出 Error:Execution 任务“:app:compileDebugJavaWithJavac”失败。
Compilation failed; see the compiler error output for details.
可能是哪里出了问题。以下部分也用红色下划线标出。 android 的新手。新手级别。 谢谢大家。 问候
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();
}
}
}
您需要捕获关闭方法可能抛出的 IOException:
例如
finally {
try {
br.close();
isr.close();
is.close();
} catch (IOException e) {
// dosomething
}
}
close
方法抛出 IOException。 close
方法周围没有 try/catch 块。您的代码应如下所示:
...
} finally {
try {
br.close();
isr.close();
is.close();
} catch(IOException ex) {
ex.printStackTrace();
}
}
关闭方法可以抛出异常。所以他们需要抓住他们。
} finally {
try {
br.close();
isr.close();
is.close();
} catch(IOException e) {
e.printStackTrace();
}
}
您的代码中还有一个问题会导致它在 运行 时失败。您正在尝试使用 AssetManager
打开 windows 计算机上的文件,而不是 phone。将文件移动到项目的资产文件夹中,然后更改
is = manager.open("C:\Users\serhat\Copy\satranc\Akdag_Reportaj\dan_akdag.pgn");
到
is = manager.open("dan_akdag.pgn");