永发信息网

帮忙看下为什么会是这样的结果?

答案:4  悬赏:60  手机版
解决时间 2021-02-06 07:20
import java.io.*;
public class CatchException
{
public static void main(String[] args)
{
FileInputStream fis = null;
try
{
fis = new FileInputStream("c;/a.txt");
int b;
b =fis.read();
while (b!= -1)
{
System.out.print((char)b);
b=fis.read();
}
}
catch (FileNotFoundException e)
{
System.out.println("FileNoutFoundException:"+e.getMessage());
}
catch (IOException e1)
{
System.out.println("IOException:"+e1.getMessage());
}
finally
{
try
{
fis.close();
}
catch (IOException ioe)
{
System.out.println("关闭文件出错!");
}
}
}

}

个人认为结果是:
FileNoutFoundException:c;/a.txt(系统找不到指定的路径。)
关闭文件出错!
可是现在运行的结果是:
FileNoutFoundException:c;/a.txt(系统找不到指定的路径。)
Exception in thread "main" java.lang.NullPointerException at CatchException.main(CatchException.java:30)

为什么啊 ???????????
最佳答案
lz使用了:
finally
{
try
{
fis.close();
}
catch (IOException ioe)
{
System.out.println("关闭文件出错!");
}
}
--------
finally的意思是:无论exception是否发生,finally中的语句都将执行。而由于lz代码中的fis=null,所以在执行fis.close();时会报空指针错误,可以修改代码如下:
if(fis!=null){
fis.close();
}
全部回答
同意zicozhang关于finally的说法。但lz你发现没有,你的FileInputStream 为null 程序在走到fis = new FileInputStream("c;/a.txt");就会因发异常,当然就会被下面的catch块捕获,至于你想得到的那种结果是跟本不可能的。因为FileInputStream 的对象始终没有被创建,自然不可能使用close方法来关闭流,你fanlly块中的catch块所捕获的异常应该是一个空指针异常,而不是IO异常。 你用IDE环境调试一下就明白了。
c;/a.txt,你好像写的是分号
系统发神经
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
真影婚纱影楼地址在什么地方,我要处理点事
微分干涉差显微镜有何特点
企业画册一般做多少页
有些成语两两相对,浑然天成把他们摆在一起恰
什么是异端邪说?`
怎样自制美白祛斑方法
信用社残币兑换必须够100块才能兑换吗?什么
青曼婚纱摄影怎么去啊,我要去那办事
民声婚纱摄影地址有知道的么?有点事想过去
单相30槽绕组的单相电机有人修过吗?主绕组为
河南省濮阳市范县濮城周围哪有算卦的
如何在组态王中建立多组相同画面?(使画面中
想对她为我穿上婚纱的感动话,怎么说啊
护士 愤怒病人沟通
峡口婚纱影楼地址在什么地方,我要处理点事
推荐资讯
海大龙翔超级海参堂地址在哪,我要去那里办事
生抽到底可以用什么代替
我于08年8月12购买新华保险红双喜金钱柜c款退
手机越狱后 Cydia找不到软件包??
在东盟区域外的国家中,中国第一个与东盟建立
联想电脑系统恢复密码
可以把小乌龟放在盒子里用沙子不用水么
靛厂路8号院北门在什么地方啊,我要过去处理
起店的意思是什么啊?知道的请说下!
按键精灵多媒体插件用不了,怎么回事
砂锅麻辣烫米线我想知道这个在什么地方
富之岛家具地址在什么地方,想过去办事
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?