各位,异常的用处多数都可以用if语句来判断,甚至可以替代,那么异常到底在程序中体现的优势在哪里呢?什么时候用异常什么时候用if语句呢?希望举例说明。

解决方案 »

  1.   

    异常可以集中处理错误。
    可以在finaly节中释放资源。
      

  2.   

    if...else...结构在理论上确实可以代替异常机制, 至少C里面就没有异常机制.异常其实也是模块化程序和面向对象思想的体现. 可以将烦允的错误处理从程序代码中分离出来, 从而使得你可以集中地在一个地方去做你想要做的事情, 而在另一个地方去做所有的错误处理工作. 这些在<Thinking in JAVA>第9章中说得很清楚了. 楼主不妨去看看.
      

  3.   

    异常中最重要的的概念就是“抛出”,了解异常,就需要了解“一般问题”和“异常状态”之间细微的区别;一般问题是指当时的上下文具有足够的信息,得以通过某中方式解决问题。但在异常状态,当时的上下文并不拥有处理问题所需的信息,所以无法继续执行下去。你只能逃脱当时的上下文,将问题移交给更高层的上下文来处理;这正式异常抛出时发生的事。
    举个例子,除法;a 为分子,b为分母;
    普通写法 ,实现一个除法的函数,返回为一个String数组,可能你在该函数里可以预先想到分母为零的处理,如下:
    String[] result = new String[2];
    if (b ==0){
      result[0]="分母为零!错误!";
      result[1]="";
      return result;
    }
    ....
    ....在用到这个函数的时候可能还要分析,如果result[0]怎么怎么样,是错误,,,,
    这样搞起来,调用的次数越多,系统越做大,越不稳定,搞的人头痛。但是如果你使用异常:
     if (b==0)
       throw new MyException();在使用的时候只需要通过try{}catch(MyException e){}捕获就可以了!集中处理错误!程序变得易读
    还有一个很好的就是异常可以使用finally,呵呵,不管怎么样,都释放资源!
      

  4.   

    用if如果一个NullPointerException, 就可能使你的程序直接停掉
    try/catch可以让你在catch段合理的处理异常, 然后使得系统继续运转下去