Java joga e joga
Java arremessos e arremessos
Neste tutorial, aprenderemos a usar a palavra-chave throw e throws para tratamento de exceções com a ajuda de exemplos.
Em Java, as exceções podem ser categorizadas em dois tipos:
- Exceções não verificadas: Eles não são verificados em tempo de compilação, mas em tempo de execução. Por exemplo:
ArithmeticException,NullPointerException,ArrayIndexOutOfBoundsException, exceções emErroraula etc. - Exceções verificadas: Eles são verificados em tempo de compilação. Por exemplo,
IOException,InterruptedException, etc.
Consulte Exceções Java para aprender em detalhes sobre exceções marcadas e não verificadas.
Normalmente, não precisamos lidar com exceções não verificadas. É porque as exceções não verificadas ocorrem devido a erros de programação. E é uma boa prática corrigi-los em vez de manuseá-los.
Este tutorial agora se concentrará em como lidar com exceções verificadas usando
throw e throws . Java lança palavra-chave
Usamos o
throws palavra-chave na declaração do método para declarar o tipo de exceção que pode ocorrer dentro dele. Sua sintaxe é:
accessModifier returnType methodName() throws ExceptionType1, ExceptionType2 … {
// code
}
Como você pode ver na sintaxe acima, podemos usar
throws para declarar várias exceções. Exemplo 1:Java lança palavra-chave
import java.io.*;
class Main {
public static void findFile() throws IOException {
// code that may produce IOException
File newFile=new File("test.txt");
FileInputStream stream=new FileInputStream(newFile);
}
public static void main(String[] args) {
try{
findFile();
} catch(IOException e){
System.out.println(e);
}
}
}
Saída
java.io.FileNotFoundException: test.txt (No such file or directory)
Quando executamos este programa, se o arquivo
test.txt não existe, FileInputStream lança um FileNotFoundException que estende o IOException classe. Se um método não trata exceções, o tipo de exceção que pode ocorrer dentro dele deve ser especificado no
throws cláusula para que os métodos mais acima na pilha de chamadas possam tratá-los ou especificá-los usando throws palavra-chave em si. O
findFile() especifica que um IOException pode ser jogado. O main() O método chama esse método e trata a exceção se for lançada. Lançando várias exceções
Veja como podemos lançar várias exceções usando o
throws palavra-chave.
import java.io.*;
class Main {
public static void findFile() throws NullPointerException, IOException, InvalidClassException {
// code that may produce NullPointerException
… … …
// code that may produce IOException
… … …
// code that may produce InvalidClassException
… … …
}
public static void main(String[] args) {
try{
findFile();
} catch(IOException e1){
System.out.println(e1.getMessage());
} catch(InvalidClassException e2){
System.out.println(e2.getMessage());
}
}
}
Aqui, o
findFile() especifica que ele pode lançar NullPointerException , IOException e InvalidClassException em seu throws cláusula. Observe que não lidamos com o
NullPointerException . Isso ocorre porque é uma exceção não verificada. Não é necessário especificá-lo no throws cláusula e tratá-la. lança palavras-chave vs. tente...pegue...finalmente
Pode haver vários métodos que podem causar exceções. Escrevendo
try...catch pois cada método será tedioso e o código se tornará longo e menos legível. throws também é útil quando você verificou a exceção (uma exceção que deve ser tratada) que não deseja capturar em seu método atual. Palavra-chave de lançamento Java
O
throw palavra-chave é usada para lançar explicitamente uma única exceção. Quando uma exceção é lançada, o fluxo de execução do programa é transferido do
try bloco para o catch quadra. Usamos o throw palavra-chave dentro de um método. Sua sintaxe é:
throw throwableObject; Um objeto throwable é uma instância da classe
Throwable ou subclasse do Throwable classe. Exemplo 2:palavra-chave de lançamento Java
class Main {
public static void divideByZero() {
throw new ArithmeticException("Trying to divide by 0");
}
public static void main(String[] args) {
divideByZero();
}
}
Saída
Exception in thread "main" java.lang.ArithmeticException: Trying to divide by 0
at Main.divideByZero(Main.java:3)
at Main.main(Main.java:7)
exit status 1
Neste exemplo, estamos lançando explicitamente um
ArithmeticException. Observação:
ArithmeticException é uma exceção não verificada. Geralmente não é necessário lidar com exceções não verificadas. Exemplo 3:lançando exceção verificada
import java.io.*;
class Main {
public static void findFile() throws IOException {
throw new IOException("File not found");
}
public static void main(String[] args) {
try {
findFile();
System.out.println("Rest of code in try block");
} catch (IOException e) {
System.out.println(e.getMessage());
}
}
}
Saída
File not found
O
findFile() método lança um IOException com a mensagem que passamos para seu construtor. Observe que, como é uma exceção verificada, devemos especificá-la no
throws cláusula. Os métodos que chamam este
findFile() precisa lidar com essa exceção ou especificá-la usando throws palavra-chave em si. Tratamos essa exceção no
main () método. O fluxo de execução do programa é transferido do try bloquear para catch bloco quando uma exceção é lançada. Então, o resto do código no try bloco é ignorado e instruções no catch bloco são executados. Java
- Variáveis e literais Java
- Entrada e Saída Java Basic
- Expressões, instruções e blocos Java
- Classe e objetos Java
- Classe abstrata Java e métodos abstratos
- Java aninhado e classe interna
- Java captura múltiplas exceções
- Autoboxing e unboxing Java
- Java String replace(), replaceAll() e método replaceFirst()
- Métodos Java String toLowercase() e toUpperCase()