当前位置: 技术问答>java相关
在异常处理的代码中是否不能有返回值?
来源: 互联网 发布时间:2015-06-14
本文导语: import java.io.*; public class LineNumberReaderEx{ public static int readFileNumber(String filename) { try{ FileReader fr=new FileReader(filename); LineNumberReader lnr=new LineNumberReader(fr); int iNumber; String s; while((s=lnr.readLine())!=null)...
import java.io.*;
public class LineNumberReaderEx{
public static int readFileNumber(String filename) {
try{
FileReader fr=new FileReader(filename);
LineNumberReader lnr=new LineNumberReader(fr);
int iNumber;
String s;
while((s=lnr.readLine())!=null){
iNumber=lnr.getLineNumber();
}
fr.close();
lnr.close();
return iNumber;
}
catch(IOException e){}
}
public static void main(String[] args) throws IOException{
if(args.length>=1){
int i=readFileNumber(args[0]);
System.out.println("这个文件有 "+i+" 行文字");
}
}
}
编译这个程序的时候,会出现"missing return statment" 的提示,如果去掉try{}catch{},而是直接在方法声明的地方加上throws IOException,则不会出现问题
请问这是怎么一回事?难道在异常处理的代码中不能有返回值?
public class LineNumberReaderEx{
public static int readFileNumber(String filename) {
try{
FileReader fr=new FileReader(filename);
LineNumberReader lnr=new LineNumberReader(fr);
int iNumber;
String s;
while((s=lnr.readLine())!=null){
iNumber=lnr.getLineNumber();
}
fr.close();
lnr.close();
return iNumber;
}
catch(IOException e){}
}
public static void main(String[] args) throws IOException{
if(args.length>=1){
int i=readFileNumber(args[0]);
System.out.println("这个文件有 "+i+" 行文字");
}
}
}
编译这个程序的时候,会出现"missing return statment" 的提示,如果去掉try{}catch{},而是直接在方法声明的地方加上throws IOException,则不会出现问题
请问这是怎么一回事?难道在异常处理的代码中不能有返回值?
|
不是的!你应该把你的变量申明以及你的return放在try-catch块的外面,否则的话你的方法可能就没有返回值了!你想想!
|
哈,异常处理一般没有返回值的,而是你的函数没有返回值,这样修改:
public static int readFileNumber(String filename) {
try{
FileReader fr=new FileReader(filename);
LineNumberReader lnr=new LineNumberReader(fr);
int iNumber;
String s;
while((s=lnr.readLine())!=null){
iNumber=lnr.getLineNumber();
}
fr.close();
lnr.close();
//return iNumber;
}
catch(IOException e){}
return iNumber; //刚加上的
}
public static int readFileNumber(String filename) {
try{
FileReader fr=new FileReader(filename);
LineNumberReader lnr=new LineNumberReader(fr);
int iNumber;
String s;
while((s=lnr.readLine())!=null){
iNumber=lnr.getLineNumber();
}
fr.close();
lnr.close();
//return iNumber;
}
catch(IOException e){}
return iNumber; //刚加上的
}