怎么才能不运行catch后面的语句
package com;
import java.io.*;
public class ComIfo {
public void readTxt(String filePath) {
try {
File file = new File(filePath);
if(file.isFile() && file.exists()) {
InputStreamReader isr = new InputStreamReader(new FileInputStream(file), "utf-8");
BufferedReader br = new BufferedReader(isr);
String[] lineTxt = null;
while ((lineTxt = br.readLine().split(",")) != null) {
System.out.println(lineTxt[0]);
}
br.close();
} else {
System.out.println(" no such file");
}
} catch (Exception e) {
System.out.println("wrong doing");
}
}
}
引用这个类readTxt类后,文件可以正常读出来,但是wrong doing 接在最后面了,怎么才能不办出rong doing ,也就是正常输出文件内容的时候,不输出 wrong doing?
可以将 catch 块中的代码放入一个 else 块中,这样只有在 try 块中发生异常时,才会执行 catch 块中的代码。
try {
// 读取文件的代码
} catch (Exception e) {
// 处理异常的代码
} else {
// 在没有异常的情况下执行的代码
}
这样在没有发生异常的情况下,就不会执行 catch 块中的代码,也就避免了输出 "wrong doing" 的情况。
仅供参考,望采纳,谢谢。
上面三位都不完全正确,存在很多问题。
实际上应该修改一下 br.readLline().split(","),为什么呢?
因为使用readLine()一定要注意:
1、 读入的数据要注意有/r或/n或/r/n
2、 没有数据时会阻塞,在数据流异常或断开时才会返回null。
3、使用 split 同样要判断数组长度是否大于 0。
请看修改后的最终代码:
package com;
import java.io.*;
public class ComIfo {
public void readTxt(String filePath) {
try {
File file = new File(filePath);
if(file.isFile() && file.exists()) {
InputStreamReader isr = new InputStreamReader(new FileInputStream(file), "utf-8");
BufferedReader br = new BufferedReader(isr);
String lineStr ="";
while ((lineStr = br.readLine()) != null) {
String[] lineTxt = lineStr.split(",");
if(lineText!=null && lineText.length>0){
System.out.println(lineTxt[0]);
}
}
br.close();
} else {
System.out.println(" no such file");
}
} catch (Exception e) {
System.out.println("wrong doing");
}
}
}
catch只有try里的代码出错了才会执行,
一般都不会执行
我认为楼上的回答是错误的。
因为catch块本就不必执行,除非对应的try块中发生异常。
你的代码正因为出现了java.lang.NullPointerException,才输出了不该输出的内容。
如果不信的话,你可以在catch块加一行:e.printStackTrace();
我试着帮你改一下代码,你可以试着运行一下:
import java.io.BufferedReader;
import java.io.File;
import java.io.InputStreamReader;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
public class ComIfo {
public void readTxt(String filePath) {
try {
File file = new File(filePath);
if (file.isFile() && file.exists()) {
InputStreamReader isr = new InputStreamReader(Files.newInputStream(file.toPath()), StandardCharsets.UTF_8);
BufferedReader br = new BufferedReader(isr);
while (true) {
String lineText = br.readLine();
if (lineText != null) {
String[] lineTextArray = lineText.split(",");
System.out.println(lineTextArray[0]);
} else {
break;
}
}
br.close();
} else {
System.out.println("no such file");
}
} catch (Exception e) {
e.printStackTrace();
System.out.println("wrong doing");
}
}
}
如果我的回答对你有帮助,希望你能采纳!