黑马程序员技术交流社区

标题: 突然想到,在try块中可以抛出异常吗? [打印本页]

作者: Joyuang    时间: 2012-1-17 10:02
标题: 突然想到,在try块中可以抛出异常吗?
本帖最后由 钱兆元 于 2012-1-31 20:45 编辑

突然想到,在try块中可以抛出异常吗?
也就是说try抛出异常,这个可以嵌套吗?


作者: 刘基军    时间: 2012-1-17 10:07
建议写点代码,实践一下
作者: Joyuang    时间: 2012-1-17 10:15
正在鼓捣,谢谢喽
作者: 曾辉    时间: 2012-1-17 14:11
throws 声明异常
throw 抛出异常
try 捕捉异常
catch 报出异常执行的操作
finally  必须执行的代码 如:关闭Connection
作者: 刘明瑞    时间: 2012-1-18 13:20
在try部分肯定是没必要了,不过finally部分有可能会用到,比如你在finally部分关闭一些资源什么的,会抛异常,这时候你就要用到try了
作者: 最初的理想    时间: 2012-1-20 20:35
在try中可以抛出异常比如来一个throw new RuntimeException(),在毕老师的输入输出中不是在try中也有抛出异常吗??所以说可以在try中抛出异常,编译时异常运行时异常都可以,不过都比较少见而已。
作者: 李晓军    时间: 2012-1-20 21:56
一般情况下没必要用,但有时候也有其使用的必要性,例如:

import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;

public class FileRead {

        BufferedReader bufReader = null;

        public FileRead() {
                try {
                        bufReader = new BufferedReader(new FileReader(new File("C://Log.log")));
                        try {
                                String line = bufReader.readLine();
                                while (null != line) {
                                        System.out.println(line);
                                        line = bufReader.readLine();
                                }
                        } catch (IOException e) {
                                System.out.println("文件读取失败");
                        } finally {
                                dispose();
                        }
                } catch (FileNotFoundException e) {
                        System.out.println("文件不存在");
                }
        }

        public void dispose() {
                try {
                        bufReader.close();
                } catch (IOException e) {
                        e.printStackTrace();
                }
        }

        public static void main(String[] args) {
                new FileRead();
        }
}
     使用try-catch嵌套来解决文件关闭的问题,当文件不存在时创建bufReader对象失败,所以不会去执行第二层的try-catch了,直接抛出异常。也不需要去关闭流了。

    如果使用一层try-catch的话,如果文件不存在,则bufReader对象,也就不会创建成功,如果去finally中关闭的话,如果不判空去关闭,就会出现空指针异常。


作者: 戴振良    时间: 2012-1-21 16:46
搞这么复杂的问题,还不如把时间用去把其他的基础内容给学了
作者: Joyuang    时间: 2012-1-31 20:06
已解决,多谢




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2