Code Bye

有关try catch 中return的问题

 public  String recordContextFormFile(String filename){
FileInputStream filei=null;
ByteArrayOutputStream out = new ByteArrayOutputStream();;
try{
filei =context.openFileInput(filename);
int len=0;
byte[] data = new byte[1024];
while((len =filei.read(data))!=1 ){
out.write(data, 0, len);
}
return new String(out.toByteArray());
}catch (Exception e) {
e.printStackTrace();
}

return “”;

}
运行程序后不报错  但是输出的是“”  假如将return new String(out.toByteArray()); 移到return “”;这里 就能返回值,
问一下下  不是在try{}里面 有返回值就结束了吗 怎么还会返回””

解决方案

40

题主对于你说的不报错本人深表怀疑。
其次,你得到的所谓的返回值的正确性也表示怀疑。
原因是你的程序有个未知变量context导致无法执行,本人仅指出几个修改意见。具体见下面源代码。
import java.io.ByteArrayOutputStream;
import java.io.FileInputStream;
import java.io.IOException;
public class IOExample {
	public static String recordContextFormFile(String filename) {
		FileInputStream filei = null;
		ByteArrayOutputStream out = new ByteArrayOutputStream();
		;
		try {
//			filei = context.openFileInput(filename);
			filei = new FileInputStream(filename);
			int len = 0;
			byte[] data = new byte[1];
			while ((len = filei.read(data)) != -1) {
				out.write(data, 0, len);
			}

			return new String(out.toByteArray(),"gbk");//or "utf-8"
		} catch (Exception e) {
			e.printStackTrace();
		}finally{
			if(filei != null){
				//这里在没有框架控制的情况下要把文件流关闭,否则会产生内存泄露。
				try {
					filei.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
		}
		return "出异常啦!";
	}

	public static void main(String[] args) {
		//这里filename你可以在本人电脑某个地方建一个文件,随便输入点内容。
		String filename = "d:/p1.py";
		String result = recordContextFormFile(filename);

		System.out.println(result);
	}
}

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明有关try catch 中return的问题