try和catch块不是捕获异常,而是将结果视为无穷大

时间:2014-04-20 19:49:39

标签: java c++ try-catch

在我的Java和C ++程序中,我都放了一个简单的try / catch块来捕获除零异常。该计划没有解决问题,而是说答案是无限的。为什么会这样?

Java(C ++几乎就是这样):

import java.util.Scanner;
import java.lang.ArithmeticException;
public class Expiriment {



    static double a;
    static double b;


    public static void main (String [] args){

        try {

        Scanner input = new Scanner (System.in);
            System.out.println("Enter first Number");
            a = input.nextInt();
            System.out.println("Enter 2nd number");
            b = input.nextInt();
            System.out.println("Answer is:"+ a/b);  

        }
        catch (ArithmeticException e) {
            double f = 0;
            System.err.println (e+" "+"Cannot perform operation.");
            System.out.println("Answer is:" + f);
        }


        }

    }

2 个答案:

答案 0 :(得分:2)

IEEE754浮点除法定义为非零a和0 b返回无穷大,如果除以0/0则返回NaN。因此,您在打印声明中得到了这样的结果。

Wikipedia

  

除以零(对有限操作数的操作给出了精确的无限结果,例如1/0log(0))(默认返回±infinity)。

答案 1 :(得分:2)

不要将Java try / catch与C ++ try / catch进行比较。在C ++程序中除以零是 C ++异常。

请看这里:

Catching exception: divide by zero