熟悉异常处理

时间:2018-11-13 08:09:18

标签: java exception exception-handling

当我只向方法本身抛出InvalidHrExcep时,我不知道为什么我的getHours()捕获InputMismatchException。谁能启发我?

public static void main (String [] args)
{
    do
    {
        try
        {
            getHours();
            getAmPm();
            accept = true;
        }
        catch(InvalidHrExcep h)
        {
            System.out.println (h);
            accept = false;
            console.nextLine();
        }
        catch (InputMismatchException e)
        {
            System.out.println (e);
            System.out.println("Input must be AM or PM.");
            accept = false;
            console.nextLine();
        }
    }while(accept == false);
}

我的getHours()方法

public static int getHours() throws InvalidHrExcep
{
    System.out.print ("Enter hours: ");
    int hour = console.nextInt();

    if(hour > 0 && hour <= 12)
    {
        return hour;
    }
    else
    {
        throw new InvalidHrExcep();
    }
}

1 个答案:

答案 0 :(得分:0)

http.get绝对可以引发console.nextInt()异常,并且您的InputMismatchException方法不必在getHours子句中指定该异常,因为它是未经检查的异常。 / p>

如果您不希望throws抛出该异常,则应将getHours()放在try块中并捕获它。