使用try catch导致错误;

时间:2016-03-21 18:57:51

标签: java try-catch

import java.util.Scanner;
import java.util.InputMismatchException;



public class divide {
    public static void main(String[] args) {
        Scanner kb = new Scanner (System.in);
        int a,b;

        try{
            System.out.println("enter 2 number ");
            a = kb.nextInt();
            b = kb.nextInt();
            int c = a/b;
            System.out.println("div="+c);

        }
        catch(ArithmeticException e)
        {
            System.out.println("please enter non 0 in deno");
        }
        catch (InputMismatchException e2)
        {
            System.out.println("please input int only");
            System.exit(0);

        }
        int d= a+b;
        System.out.println("sum="+d);
    }
}

错误

divide.java:38:错误:变量a可能尚未初始化         int d = a + b;                ^ divide.java:38:错误:变量b可能尚未初始化         int d = a + b;

3 个答案:

答案 0 :(得分:2)

您需要初始化变量

int a =0,b=0;

答案 1 :(得分:1)

请记住,try / catch块的工作方式,并不能保证其中的语句实际运行。 (因为可能存在错误,导致它们被跳过。)

因此,当您尝试引用它们时,Java无法保证已定义a和b。在这种情况下,他们总是会,因为你在catch语句中退出。

您可以通过提供初始默认值或将引用代码移动到try块中来解决此问题。

答案 2 :(得分:1)

如果你的 try-catch 无论是什么/如何在阅读时失败,那么变量b永远不会被初始化...... 应用程序跳转到catch块,最后你执行:

int d= a+b;
System.out.println("sum="+d);

在这种情况下b的价值应该是什么?

快速解决方法是:

声明并初始化变量......

Scanner kb = new Scanner (System.in);
int a = 0;
int b = 0;