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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 136616244 中级黑马   /  2014-5-4 10:37  /  1209 人查看  /  9 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 136616244 于 2014-5-4 14:59 编辑

异常是指在运行时出现的各种各样的问题,在Java中异常有两种处理方式:
    1,遇到问题不进行处理,抛给调用者
    2,遇到问题针对性的用try,catch,finally进行处理!
那么下面代码用异常处理方式和if elae处理方式有什么不同吗?
  1. package Day11;

  2. import java.util.Scanner;

  3. public class Try {

  4. public static void main(String[] args) {
  5. // TODO Auto-generated method stub
  6. Try t = new Try();
  7. try {
  8. int num = t.div(4,0);
  9. System.out.println(num);

  10. } catch (Exception e) {
  11. System.out.println("异常啦!");
  12. }
  13. }
  14. int div(int a,int b)throws Exception{
  15. return a/b;// throw new Exception
  16. }
  17. }
  18. class If{
  19. Scanner s = new Scanner(System.in);
  20. int num = s.nextInt();
  21. void function(){
  22. if(!(num==0)){
  23. int num = div(4,0);
  24. System.out.println(num);
  25. }
  26. else{
  27. System.out.println("异常啦");
  28. }
  29. System.out.println("over");
  30. }
  31. int div(int a, int b){
  32. return a/b;
  33. }
  34. }
复制代码

初学者有很多细节不是很明白,希望大神分析的透彻点!

9 个回复

倒序浏览
在这里楼至是知道如果除数为0是没有任何意义的,因此就这一个例子来说,处理的效果没有什么不同。但往往在写代码的过程中,我们是不知道哪个地方会出错的,只能事先判断它可能出错,而如果都用ifelse语句来判断的话,这对程序员来说是一个沉重的负担,因此引入了trycatch语句,将各种可能的异常错误分类,代码都放在try语句中,如果执行到了错误,便交给捕捉相应异常的catch语句去处理,这样就提高了效率。
回复 使用道具 举报
Lin0411 发表于 2014-5-4 10:48
在这里楼至是知道如果除数为0是没有任何意义的,因此就这一个例子来说,处理的效果没有什么不同。但往往在 ...

你的意思是,if可以代替try catch   只不过比较麻烦啊
回复 使用道具 举报
136616244 发表于 2014-5-4 10:52
你的意思是,if可以代替try catch   只不过比较麻烦啊

至少在java里面是相当的麻烦!!!c语言没有trycatch语句,它就全靠ifelse了,但是c语言很底层,在用c写的时候错误都相当明显,java就不样了,封装了太多的细节,用ifelse来判断简直是噩梦!!
回复 使用道具 举报
其实我是这样认为,既然要针对性处理,你每一个细节都用ifelse处理会更具针对性
回复 使用道具 举报
在你的这段代码中,用if语句也能满足发现异常值的要求。但是与try是有区别的。形式上的区别有很多,但本质上的区别在于封装和简化。
java把异常都封装为一个对象,这样,出现相同的异常的时候,代码可以被重复利用。其次,异常处理把错误处理代码与正常代码分离开来,阅读性更好。再次,处理异常的语句都结构化为try、catch、finally,比起if语句,能更加简单方便的实现功能,简化书写也简化了编程。等等好处多多。
异常机制的底层必然也是要用到判断的,当把这一系列异常相关的代码形成异常类,异常机制的时候,if语句跟他就没有可比性了。可以理解为用碎木屑搭房子和用积木搭房子的区别。
回复 使用道具 举报
神马 发表于 2014-5-4 11:09
在你的这段代码中,用if语句也能满足发现异常值的要求。但是与try是有区别的。形式上的区别有很多,但本质 ...

这位帅哥回答的比较具体,QQ多少,以后还有问题直接向你请教:)
回复 使用道具 举报
136616244 发表于 2014-5-4 11:22
这位帅哥回答的比较具体,QQ多少,以后还有问题直接向你请教

惭愧惭愧,我也是个初学者,在努力第35期呢。一起进步吧。
回复 使用道具 举报
本帖最后由 136616244 于 2014-5-4 11:53 编辑
神马 发表于 2014-5-4 11:27
惭愧惭愧,我也是个初学者,在努力第35期呢。一起进步吧。


好的,只是我还没打算去黑马,自从看到官网上说五一之后涨学费,我发现黑马对去培训的学生跟其他机构本质上区别不大,要说黑马与其他一般机构区别我认为他对自学者提供了非常好的便利,比如学习资源和交流平台,这些人才是最大受益者。所以我打算走完入学流程,但是我相信能过黑马面试流程的同时也具备自学完黑马所有课程的能力。
回复 使用道具 举报
136616244 发表于 2014-5-4 11:51
好的,只是我还没打算去黑马,自从看到官网上说五一之后涨学费,我发现黑马对去培训的学生跟其他机构本质 ...

呵呵,如果说黑马对去培训的学生跟其他机构本质上区别不大,不如说是你原来想的太完美了,黑马并不是做慈善的,而是和你做一个公平的等价交换,你付出努力、时间和一定的金钱,黑马回报你相应的技术能力。要说特别的话,那就是这个社会上能做这样等价交换的机构并不多了。如果别的培训能给你同样的交换,那是不是黑马倒不是最重要的不是么。如果你能自学达到一样的水平,那自然最好了。
至于也许你觉得学费贵了?我对于黑马的运营成本和定价等等并不了解,只能主观的说,相对其他培训和其品质来说,我觉得值。
另外走完流程也只是打下基础而已,后面要学的还有很多,自学如果效率不高要花大量的时间。

评分

参与人数 1黑马币 +2 收起 理由
轻语。 + 2 神马都是浮云

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马