"Eu queria falar sobre mais uma coisa hoje. Em Java, todas as exceções são divididas em dois tipos: verificadas e não verificadas (aquelas que devem ser capturadas e aquelas que você não precisa capturar). Por padrão, todas as exceções precisam ser capturado."
"Você pode intencionalmente lançar exceções em seu código?"
"Você pode lançar qualquer exceção em seu próprio código. Você pode até mesmo escrever suas próprias exceções. Mas falaremos sobre isso mais tarde. Agora, vamos nos concentrar nas exceções lançadas pela Java Machine."
"OK."
"Se ClassNotFoundException ou FileNotFoundException são lançados (ocorrem) em um método, o desenvolvedor deve indicá-los na declaração do método. Essas são exceções verificadas . Geralmente é assim:"
Exemplos de exceções verificadas |
---|
|
|
|
"Então, apenas escrevemos 'lances' seguidos por uma lista de exceções delimitada por vírgulas, certo?"
method1
“ Sim . _ _ _
"Novamente. Se o seu método principal precisar chamar um método cuja declaração contenha ' throws FileNotFoundException , …', você precisará fazer uma das duas coisas:
1) Capturar FileNotFoundException , …
Você deve agrupar o código que chama o método inseguro em um bloco try-catch .
2) Não capture FileNotFoundException , …
Você deve adicionar essas exceções à lista de lances do seu método principal ."
"Você poderia me dar um exemplo?"
"Dê uma olhada neste:"
public static void main(String[] args)
{
method1();
}
public static void method1() throws FileNotFoundException, ClassNotFoundException
{
//Throws FileNotFoundException if the file doesn't exist
FileInputStream fis = new FileInputStream("C2:\badFileName.txt");
}
"O código neste exemplo não compilará, porque o método principal chama method1() , que lança exceções que precisam ser capturadas."
"Para compilar, precisamos adicionar tratamento de exceção ao método principal. Você pode fazer isso de duas maneiras:"
public static void main(String[] args) throws FileNotFoundException, ClassNotFoundException
{
method1();
}
public static void method1() throws FileNotFoundException, ClassNotFoundException
{
//Throws FileNotFoundException if the file doesn't exist
FileInputStream fis = new FileInputStream("C2:\badFileName.txt");
}
"E aqui pegamos com um try-catch :"
public static void main(String[] args)
{
try
{
method1();
}
catch(Exception e)
{
}
}
public static void method1() throws FileNotFoundException, ClassNotFoundException
{
//Throws FileNotFoundException if the file doesn't exist
FileInputStream fis = new FileInputStream("C2:\badFileName.txt");
}
"Está começando a ficar mais claro."
"Veja o exemplo a seguir. Isso o ajudará a entender o resto."
public static void method2() throws FileNotFoundException, ClassNotFoundException
{
method1();
}
public static void method3() throws ClassNotFoundException
{
try
{
method1();
}
catch (FileNotFoundException e)
{
System.out.println("FileNotFoundException has been caught.");
}
}
public static void method4()
{
try
{
method1();
}
catch (FileNotFoundException e)
{
System.out.println("FileNotFoundException has been caught.");
}
catch (ClassNotFoundException e)
{
System.out.println("ClassNotFoundException has been caught.");
}
}
"Existe mais um tipo de exceção, a RuntimeException e as classes que a herdam. Você não precisa capturá-las. São exceções não verificadas. Elas são consideradas difíceis de prever. Você pode lidar com elas da mesma forma, mas você não precisa indicá-los em uma cláusula throws ."
GO TO FULL VERSION