A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© LINUS 中级黑马   /  2013-4-16 21:28  /  2096 人查看  /  16 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 LINUS 于 2013-4-17 23:12 编辑
  1. import java.io.FileWriter;
  2. import java.io.IOException;

  3. class FileExceptionDemo{
  4.         public static void main(String[] args){
  5.                 FileWriter fw = null;
  6.                 try{
  7.                         fw = new FileWriter ("Linus.txt");
  8.                         fw.write("HeiMa,我来啦!");
  9.                 }
  10.                 catch (IOException e){
  11.                         System.out.println(e.toString());
  12.                 }
  13.                 finally{
  14.                         if(fw!=null){
  15.                         try{        
  16.                         fw.close();
  17.                         }
  18.                         catch(IOException e){
  19.                         //System.out.println(e.toString());
  20.                         //System.out.println("错误啦!!!!");// finally既然是必须执行的  ,为什么运行时这里的 错误啦 不提示呢 没打印语句呢。
  21.                         }
  22.                         }}
  23.                         }
  24.         }
复制代码
finally是必须执行的语句,怎么才能让catch里面的语句执行呢?上面我定义了 fw为null。
finally应该空指针异常啊?
debug测试 catch直接不走。

请问怎么样改代码 让其走catch 然后输出自定义打印语句?

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

16 个回复

倒序浏览
第8行注掉试试?
回复 使用道具 举报
你把十五行的    if(fw!=null){   改一下   改成false的就能运行catch里面的内容了
回复 使用道具 举报
不可以 只是空指针异常 但没打印定义的输出语句
回复 使用道具 举报
Asan 发表于 2013-4-16 21:37
你把十五行的    if(fw!=null){   改一下   改成false的就能运行catch里面的内容了

具体是 改哪一块? 没看懂···
回复 使用道具 举报
因为在finally代码中是要执行的语句,但是try代码中没有出现代码错误所以catch语句中没有打印出    ("出错啦!!!!")
回复 使用道具 举报
finally是一定会执行的,但你finally语句块里又有了try、catch语句,而try语句块里的语句又没有抛出异常,所以不会执行catch里的方法。

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
LINUS 中级黑马 2013-4-16 22:20:25
8#
JavaUtil 发表于 2013-4-16 21:57
finally是一定会执行的,但你finally语句块里又有了try、catch语句,而try语句块里的语句又没有抛出异常, ...

想让try抛出异常,怎么才能执行catch里语句

我想要的结果是 输出 自定义的异常打印语句
回复 使用道具 举报
本帖最后由 JavaUtil 于 2013-4-16 22:30 编辑
LINUS 发表于 2013-4-16 22:20
想让try抛出异常,怎么才能执行catch里语句

我想要的结果是 输出 自定义的异常打印语句 ...

你可以再try语句块里自己throw一个IO异常对象,如:throw new IOException();
回复 使用道具 举报
LINUS 中级黑马 2013-4-16 22:43:12
10#
JavaUtil 发表于 2013-4-16 22:28
你可以再try语句块里自己throw一个IO异常对象,如:throw new IOException();
  1. import java.io.FileWriter;
  2. import java.io.IOException;

  3. class FileExceptionDemo1{
  4.         public static void main(String[] args) throws Exception{
  5.                 FileWriter fw = null;
  6.                 try{
  7.                         //fw = new FileWriter ("cai.txt");
  8.                         fw.write("hahaha");
  9.                 }
  10.                 catch (IOException e) {
  11.                         throw new IOException("空指针");
  12.                 }
  13.                 finally{
  14.                         if(fw!= null){
  15.                        
  16.                         try{       
  17.                         fw.close();
  18.                         }
  19.                         catch(IOException e){
  20.                                 throw new IOException("空指针");
  21.                         }
  22.                         }}
  23.                         }
  24.         }
复制代码

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
LINUS 中级黑马 2013-4-16 22:44:00
11#
LINUS 发表于 2013-4-16 22:43

还是不可以  报的是这个 Exception in thread "main" java.lang.NullPointerException

我想要的结果是   输入我们自定义的异常

能写一下代码么?
回复 使用道具 举报
LINUS 发表于 2013-4-16 22:44
还是不可以  报的是这个 Exception in thread "main" java.lang.NullPointerException

我想要的结果是   ...

throw语句要写在try语句块里,不是catch语句块里,其他的和你以前的代码一样的。
回复 使用道具 举报
LINUS 发表于 2013-4-16 22:44
还是不可以  报的是这个 Exception in thread "main" java.lang.NullPointerException

我想要的结果是   ...

import java.io.FileWriter;
import java.io.IOException;

class FileExceptionDemo1{
        public static void main(String[] args) throws Exception{
                FileWriter fw = null;
                try{
                        //fw = new FileWriter ("cai.txt");
                        fw.write("hahaha");

                }
                catch (IOException e) {
                      System.out.println(e.toString());
                }
                finally{
                        if(fw!= null){
                        
                        try{        
                        fw.close();
                          throw new IOException("空指针");
                        }
                        catch(IOException e){
                               System.out.println(e.toString());
                        }
                        }}
                        }
        }

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
LINUS 中级黑马 2013-4-16 23:05:22
14#
JavaUtil 发表于 2013-4-16 22:55
import java.io.FileWriter;
import java.io.IOException;

大哥 还是提示这个:

Exception in thread "main" java.lang.NullPointerException
        at com.zxw.test.FileExceptionDemo1.main(FileExceptionDemo1.java:11)


能不能提示  汉字?我们自己输入的内容   空指针 这三个字
回复 使用道具 举报
本帖最后由 JavaUtil 于 2013-4-16 23:21 编辑
LINUS 发表于 2013-4-16 23:05
大哥 还是提示这个:

Exception in thread "main" java.lang.NullPointerException

好吧,我震了。前面直接粘贴你的代码改的,你把fw=new FileWriter()前面的注释符//删了
回复 使用道具 举报
LINUS 中级黑马 2013-4-16 23:36:09
16#
JavaUtil 发表于 2013-4-16 23:18
好吧,我震了。前面直接粘贴你的代码改的,你把fw=new FileWriter()前面的注释符//删了 ...

好吧 俺服了  ,,,


Thanks···
回复 使用道具 举报
如果问题未解决,请继续追问,如果没有问题了,请将帖子分类 改为“已解决”,谢谢
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马