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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© igi9009 中级黑马   /  2014-4-23 19:50  /  882 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

对于异常至今一直比较模糊,模糊的地方有以下两点
第一:就是try和throw,什么时候应该用try什么时候应该用throw,我也知道能处理的用try不能处理的就throw,可是处理中要怎么处理,不就是显示错误的信息吗,可是我在网上看了最好不要只显示错误信息,最好对异常进行处理,他的这个处理啥意思呢。
第二:就是RuntimeException异常和非RuntimeException异常的问题,对于这个问题我的理解是分别是运行时异常和编译时异常,在看视频的时候老师说RuntimeException异常不能处理需要对代码进行处理,他说的这个代码处理是不是下面的情况例如ArithmeticException异常,只要判断输入除数数据不为零就可以了,可是要是判断了不为零,那也就没必要处理这异常了,纠结
也许钻牛角尖了,希望大神们将我拉出,最好举几个例子,例子最能说明问题的

点评

视频中讲得那么详细了,你再仔细去看看吧  发表于 2014-4-24 18:28

3 个回复

倒序浏览
本帖最后由 anqi 于 2014-4-23 20:23 编辑

异常的概念你没搞清楚 在《java编程思想》中这样定义阻止当前方法或作用域继续执行的问题                                                                      什么时候应该用try什么时候应该用throw。 try的意思就是试一下里面的话会不会抛出异常,如果有异常,我就扔出一个包含这个异常信息的对象。catch就能捕捉这个对象。 既然我对这个异常处理了自然不用在throw(往外扔了)。如果我自身处理不了异常,我就利用throw 将异常抛出去,交给上一级程序处理。
如果这个可能出现异常的语句没有进行try处理,它就会有可能抛出这个异常对象。抛出了自身没处理就需要把它throw 给上一级进行处理。对于运行时异常 就是一些特殊的异常,这个异常相当于交给虚拟机进行了处理。虚拟的做法就是将程序停止,告诉你异常的信息,你需要更正后再运行程序
  1. public int devide(int num1, int num2) {
  2.         //判断除数是否为0
  3.         if(num2 == 0) {
  4.             throw new IllegalArgumentException("除数不能为零");//正常运行的时候它不做什么 当发现等于零的时候抛出一个运行时异常
  5.         }
  6.          
  7.         return num1/num2;
复制代码
你可以判断当num2 == 0时打印一句“除数不能为零”。当运行程序时候,使用这个方法的人可能发现不了这个错误,因为程序在正常的运行。
但是你抛出了一个运行时异常,就是叫程序强制停止,告诉他除数不能为零”,他想继续运行这个程序就必须改正num2的值。




评分

参与人数 1技术分 +1 收起 理由
菜小徐 + 1

查看全部评分

回复 使用道具 举报
正好我这里也不懂,看下
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马