黑马程序员技术交流社区
标题:
关于异常的问题
[打印本页]
作者:
igi9009
时间:
2014-4-23 19:50
标题:
关于异常的问题
对于异常至今一直比较模糊,模糊的地方有以下两点
第一:就是try和throw,什么时候应该用try什么时候应该用throw,我也知道能处理的用try不能处理的就throw,可是处理中要怎么处理,不就是显示错误的信息吗,可是我在网上看了最好不要只显示错误信息,最好对异常进行处理,他的这个处理啥意思呢。
第二:就是RuntimeException异常和非RuntimeException异常的问题,对于这个问题我的理解是分别是运行时异常和编译时异常,在看视频的时候老师说RuntimeException异常不能处理需要对代码进行处理,他说的这个代码处理是不是下面的情况例如ArithmeticException异常,只要判断输入除数数据不为零就可以了,可是要是判断了不为零,那也就没必要处理这异常了,纠结
也许钻牛角尖了,希望大神们将我拉出,最好举几个例子,例子最能说明问题的
作者:
anqi
时间:
2014-4-23 20:04
本帖最后由 anqi 于 2014-4-23 20:23 编辑
异常的概念你没搞清楚 在《java编程思想》中这样定义阻止当前方法或作用域继续执行的问题 什么时候应该用try什么时候应该用throw。 try的意思就是试一下里面的话会不会抛出异常,如果有异常,我就扔出一个包含这个异常信息的对象。catch就能捕捉这个对象。 既然我对这个异常处理了自然不用在throw(往外扔了)。如果我自身处理不了异常,我就利用throw 将异常抛出去,交给上一级程序处理。
如果这个可能出现异常的语句没有进行try处理,它就会有可能抛出这个异常对象。抛出了自身没处理就需要把它throw 给上一级进行处理。对于运行时异常 就是一些特殊的异常,这个异常相当于交给虚拟机进行了处理。虚拟的做法就是将程序停止,告诉你异常的信息,你需要更正后再运行程序
public int devide(int num1, int num2) {
//判断除数是否为0
if(num2 == 0) {
throw new IllegalArgumentException("除数不能为零");//正常运行的时候它不做什么 当发现等于零的时候抛出一个运行时异常
}
return num1/num2;
复制代码
你可以判断当
num2 == 0时打印一句“
除数不能为零”。
当运行程序时候,使用这个方法的人可能发现不了这个错误,因为程序在正常的运行。
但是你抛出了一个运行时异常,就是叫程序强制停止,告诉他
“
除数不能为零”,他想继续运行这个程序就必须改正num2的值。
作者:
ass
时间:
2014-4-24 17:47
正好我这里也不懂,看下
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2