黑马程序员技术交流社区
标题:
异常处理
[打印本页]
作者:
张 涛
时间:
2012-10-2 19:09
标题:
异常处理
看一些程序中,经常这样处理异常:
public class Test {
public static void main(String[] args) {
FileReader fr = Utils.getFileReader("test.txt");
}
}
class Utils {
public static FileReader getFileReader(String filePath) {
try {
FileReader fr = new FileReader(filePath);
return fr;
} catch (FileNotFoundException e) {
throw new RuntimeException(e);//注释
}
}
}
复制代码
注释部分是处理方式。
问题:
1.为什么这样处理呢?
2.这样throw出一个异常和在方法上throws异常有什么不同吗?
3.如果catch住,不throw,只是打印提示信息呢?
4.一般这样的异常,该怎样处理?三种处理方式该符合选择?
作者:
陈虹旭
时间:
2012-10-2 19:29
本帖最后由 陈虹旭 于 2012-10-2 19:32 编辑
我还没有学到FileReader 和FileNotException相关的知识,不过今天刚刚学习完RuntimeException,你的程序也大致可以看懂,也对这个知识点稍有理解,我觉得:
1.catch (FileNotFoundException e)
这里捕获了没有找到文件的异常,没有找到文件,就没有办法对这个程序做任何处理,只能抛出这个异常,但是这个异常是这个文件的异常,而不是你的异常,调用者之所以调用你的getFileReader方法,是要得到一个结果,也就是找到还是没找到,并不是把文件的异常问题给调用者,因为你给他他也看不懂,还是没法处理,他就只能抛给jvm了,所以这里抛出的是RuntimeException,这个异常就是说没法处理,只能让程序停止,跟调用者传的参数有关系,什么时候传进的参数符合要求了程序就能正常运行了
2.RuntimeException这个异常是不用声明的,即使声明了,抛出给调用者,调用者也不用处理,因为它是运行异常
其实没有太大的区别,非RumtimeException异常必须声明,RuntimeException异常可以不用声明,都是都要用throw抛出的
3.catch住不throw只打印信息不是就失去了对程序处理的本质了吗?一般处理都是要做出具体处理的,而不是仅仅打印出信息让调用者看见而已
4.我觉得其实这样的异常都是根据现实描述事物而定的,也就是说看事物是怎样的事物了,根据情况而定来决定对catch所捕获的对象做怎样的解决,我建议你再回头看下RuntimeException的视频
这是我对这个程序的理解,如果有不对的地方望谅解,我是新手,呵呵!不过还是希望对你有帮助!
作者:
武庆东
时间:
2012-10-2 19:30
public class Test {
public static void main(String[] args) {
FileReader fr = Utils.getFileReader("test.txt");
}
}
class Utils {
public static FileReader getFileReader(String filePath) {
try {
FileReader fr = new FileReader(filePath);
return fr;
} catch (FileNotFoundException e) {
throw new RuntimeException(e);//注释
}
}
}
注释部分是处理方式。
问题:
1.为什么这样处理呢?
解答:java异常处理机制是try{}catch(Exception e){}finally{//程序的出口,这个根据需求可以选择}。java运行时环境收到异常对象时,会寻找处理该异常对象的catch块,如果找到合适的catch块并把该异常对象交给该catch块处理,那这个过程称为捕获异常;如果java运行时环境找不到捕获异常的catch块,则运行时环境终止,java程序也将退出。
2.这样throw出一个异常和在方法上throws异常有什么不同吗?
解答:throw代表一个动作,进行抛出异常,程序本身可以catch代码块中捕捉该异常。throws异常一般用在方法开始,进行声明,只是进行抛出不做任何处理~!不推荐使用。
3.如果catch住,不throw,只是打印提示信息呢?
解答:已经catch住了,根据需求判断时候抛出异常,throw一般在可能出现的异常很多使用,在后续的catch代码块中进行相应的代码处理~
4.一般这样的异常,该怎样处理?三种处理方式该符合选择?
解答:如上述~!
作者:
徐-星星
时间:
2012-10-2 20:49
11.jpg
(94.83 KB, 下载次数: 63)
下载附件
2012-10-2 20:50 上传
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2