Как отправить сообщение с автоматически сгенерированным исключением? - PullRequest
0 голосов
/ 30 апреля 2020

Когда выдается исключение вручную, вы можете отправить небольшое сообщение:

throw new Exception("this message");

, но при запуске этого кода мне нужно ввести число с плавающей запятой, поэтому, если я, например, введу строку, сам код выдает исключение, но как мне отправить сообщение такого же типа?

public class Main {

    public static void main(String[] args) {

        Scanner scan;
        float feeHold;

        System.out.println("\nEnter Registration Fee (only numbers)");

        try {
            scan = new Scanner(System.in);
            feeHold = scan.nextFloat();

            System.out.println("\n" + feeHold);
        }
        catch (InputMismatchException e) {
            e.printStackTrace();
        }
    }
}

enter image description here

Как это:

enter image description here

Ответы [ 2 ]

2 голосов
/ 30 апреля 2020

Вы можете поймать InputMismatchException, как вы делаете правильно, но вместо того, чтобы вызывать e.printStackTrace(), вы можете выдать новое исключение с вашим собственным сообщением. Помните, что вам также нужно объявить, что ваш main может выдать исключение.

public class Main {

    public static void main(String[] args) throws Exception {

        Scanner scan;
        float feeHold;

        System.out.println("\nEnter Registration Fee (only numbers)");

        try {
            scan = new Scanner(System.in);
            feeHold = scan.nextFloat();

            System.out.println("\n" + feeHold);
        } catch (InputMismatchException e) {
            throw new Exception("Here's your custom message");
        }
    }
}

Вывод:

Enter Registration Fee (only numbers)
abc
Exception in thread "main" java.lang.Exception: Here's your custom message
at Main.main(Main.java:19)

Это просто способ сделать то, что вы спросил, наверное, не самый подходящий. Посмотрите немного в документации Exception , и вы обязательно найдете более структурированный и элегантный способ выполнения sh вашей задачи.

1 голос
/ 30 апреля 2020

Непосредственно вы можете сделать это, обернув свой исключительный код в новый блок try-catch и выбрасывая новое пользовательское исключение из catch, но этот код действительно пахнет очень плохо, более того, вы не должны этого делать, потому что библиотека / sdk продавец хочет бросить точное исключение. Но если вы хотите напечатать свое собственное сообщение, вы можете просто набрать System.out.println("your own message") в предложении catch.

...