HackerRank #34 | Exception Handling Try / Catch | 🇧🇷
Tags: java, try, catch, exception
Published: 2021-09-09 21:57:05

[Este problema](https://www.hackerrank.com/challenges/java-exception-handling-try-catch/problem) pede para recebermos dois `ints` e que, caso não recebamos números entre 0 e 2,147,483,647 (`Integer.MAX_VALUE`), devemos fazer um `catch` que retorna duas exceções: `ArithmeticException` ou `InputMismatchException`, dependo do input "errado".

Para isso, vamos fazer um `try / catch`. Neste caso, vamos escanear dentro do `try`, passando o seguinte código:

```
try (Scanner scanner = new Scanner(System.in)) {
            int x = scanner.nextInt();
            int y = scanner.nextInt();
            System.out.println(x / y);
```

Aqui, pegamos os inputs de `x` e `y` e fazemos a divisão, como pede o problema.

A seguir, utilizaremos o `catch`. Para isso, passamos as exceções solicitadas entre parênteses junto a um nome de nossa escolha e imprimimos a exceção caso o software identifique que há um problema. Fica assim:

```
        } catch (ArithmeticException arithmeticEx) {
            System.out.println(arithmeticEx);
        } catch (InputMismatchException inputMismatchEx) {
            System.out.println(inputMismatchEx.getClass().getName());
        }
```

No segundo `catch` usamos `.getClass().getName()` porque existem duas exceções de `InputMismatchException` que são solicitadas. Usando os métodos da própria classe podemos retornar o erro corretamente, dependendo do input de cada tentativa.

=========

O código final fica assim, dentro da main:

```
        try (Scanner scanner = new Scanner(new File("input.txt"))) {
            int x = scanner.nextInt();
            int y = scanner.nextInt();
            System.out.println(x / y);
        } catch (ArithmeticException arithmeticEx) {
            System.out.println(arithmeticEx);
        } catch (InputMismatchException inputMismatchEx) {
            System.out.println(inputMismatchEx.getClass().getName());
        }
```

=========

#### Referências:

[InputMismatchException](https://docs.oracle.com/javase/7/docs/api/java/util/InputMismatchException.html) : Oracle
[ArithmeticException](https://docs.oracle.com/javase/7/docs/api/java/lang/ArithmeticException.html) : Oracle
[Try block](https://docs.oracle.com/javase/tutorial/essential/exceptions/try.html) : Oracle
[Catch block](https://docs.oracle.com/javase/tutorial/essential/exceptions/catch.html) : Oracle

============

Essa publicação faz parte de uma série de exercícios resolvidos em Java no HackerRank. Acesse a série completa:

- [HackerRank #6 | Scanner e End-of-file](https://dev.to/beatrizmaciel/hackerrank-6-scanner-e-endoffile-462c)
- [HackerRank #7 | Int to String / String to Int](https://dev.to/beatrizmaciel/hackerrank-7-int-em-string-e-vice-versa-4n1e)
- [HackerRank #8 | Date and Time](https://dev.to/beatrizmaciel/hackerrank-8-date-and-time-1f78)
- [HackerRank #9 | Static Initializer Block](https://dev.to/beatrizmaciel/hackerrank-9-static-initializer-block-48ha)
- [HackerRank #10 | Currency Formatter](https://dev.to/beatrizmaciel/hackerrank-10-currency-formatter-22oj)
- [HackerRank #11 | DataTypes](https://dev.to/beatrizmaciel/hackerrank-11-datatypes-2e9h)
- [HackerRank #12 | Strings Introduction](https://dev.to/beatrizmaciel/hackerrank-12-strings-introduction-2d1n)
- [HackerRank #13 | Substring Comparisons](https://dev.to/beatrizmaciel/hackerrank-13-substring-comparisons-57ha)
- [HackerRank #14 | Abstract Class](https://dev.to/beatrizmaciel/hackerrank-14-abstract-class-3h5d)
- [HackerRank #18 | BigInteger](https://dev.to/beatrizmaciel/hackerrank-18-biginteger-4jad)
- [HackerRank #19 | Loops II](https://dev.to/beatrizmaciel/hackerrank-19-loops-ii-385n)
- [HackerRank #20 | String Reverse](https://dev.to/beatrizmaciel/hackerrank-20-string-reverse-nec)
- [HackerRank #23 | Instanceof keyword](https://dev.to/beatrizmaciel/hackerrank-23-instanceof-keyword-3lh6)
- [HackerRank #26 | Generics](https://dev.to/beatrizmaciel/hackerrank-26-generics-55p8)
- [HackerRank #27 | 1D Array](https://dev.to/beatrizmaciel/hackerrank-27-1d-array-5f80)
- [HackerRank #28 | Anagrams](https://dev.to/beatrizmaciel/hackerrank-28-anagrams-boi)
- [HackerRank #33 | Arraylist](https://dev.to/beatrizmaciel/hackerrank-33-arraylist-2lj1)
- HackerRank #34 | Exception Handling Try / Catch
- [HackerRank #36 | Exception Handling](https://dev.to/beatrizmaciel/hackerrank-35-exception-handling-44e)
- [HackerRank #37 | List](https://dev.to/beatrizmaciel/hackerrank-37-list-4gmj)
- [HackerRank #38 | SubArray](https://dev.to/beatrizmaciel/hackerrank-38-subarray-1693)
- [HackerRank #39 | HashSet](https://dev.to/beatrizmaciel//hackerrank-39-hashset-3jb3)
- [HackerRank #40 | Java Dequeue](https://dev.to/beatrizmaciel/hackerrank-40-java-dequeue--497h)