Java declaração try catch em detalhes

Em aplicações práticas, é extremamente importante para o tratamento de erros de qualquer programa difícil de alcançar cem por cento perfeito, pode haver uma série de problemas desconhecidos no programa, por isso certifique-se de várias questões de desenvolvimento programa de tratamento apropriado e Java mecanismo de manipulação de exceção prevista pode ajudar o usuário para melhor resolver este problema. Java mecanismo de manipulação de exceção permite que o programa tem tolerância a falhas excelente, tornar o programa mais robusto.

tratamento de exceção Java é conseguido através de cinco palavras-chave: tentativa, captura, lance, lances, e, finalmente. tente instrução catch é usado para capturar e manipular uma exceção, finalmente declaração para o código (exceto em circunstâncias especiais) deve ser realizado sob quaisquer circunstâncias, jogue declaração para lançar uma exceção, joga declaração é usada para declarar uma exceção pode ocorrer.

Em Java geralmente tentam instrução catch para capturar a exceção e alça. Sintaxe é a seguinte:

try {
    // 可能发生异常的语句
} catch(ExceptionType e) {
    // 处理异常语句
}

Na sintaxe acima, o pacote pode levantar uma declaração exceção no bloco try para capturar a exceção pode ocorrer. Após a captura (excepção classe) colocar correspondentes especifica cláusula prendedor do tipo de processo de excepção pode gerar excepção instância de objecto classe quando ocorre uma anomalia.

Se ocorrer uma exceção no bloco try, então o objeto é uma exceção correspondente será lançada, então pegar declaração, dependendo do tipo do objeto exceção é lançada captura e processamento. Após o processamento, o programa vai ignorar o resto da declaração bloco try, uma declaração quadra para pegar por trás da primeira declaração começa a execução.

Se o bloco try nenhuma anormalidade ocorre, o fim normal do bloco try, o bloco catch traseira é ignorada, o programa vai pegar a primeira declaração após a declaração bloco começa a execução.

Preste atenção: Try ... catch e if ... else não é o mesmo, este último chaves try {} não pode ser omitido, mesmo que apenas uma linha de código no bloco try, as chaves não podem ser omitidos. De modo semelhante é o bloco de captura após as chavetas {} não pode ser omitido. Além disso, a variável declarada bloco try apenas a variável local dentro do bloco de código, válido somente dentro do bloco try, outras partes não pode acessar a variável.

Na sintaxe do bloco de processamento acima pode ser de saída correspondente à informação de anormalidade, utilizando os seguintes três métodos.

	printStackTrace() 方法:指出异常的类型、性质、栈层次及出现在程序中的位置。
	
	getMessage() 方法:输出错误的性质。
	
	toString() 方法:给出异常的类型与性质。

A entrada para escrever o nome de um aluno, idade e sexo do programa, o pedido não pode capturar a era digital, é a exceção. Tal como aqui utilizado, a instrução para tentar captura conseguida, como se segue:

import java.util.Scanner;

public class Test {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("---------学生信息录入---------------");
        String name = ""; // 获取学生姓名
        int age = 0; // 获取学生年龄
        String sex = ""; // 获取学生性别
        try {
            System.out.println("请输入学生姓名:");
            name = scanner.next();
            System.out.println("请输入学生年龄:");
            age = scanner.nextInt();
            System.out.println("请输入学生性别:");
            sex = scanner.next();
        } catch (Exception e) {
            e.printStackTrace();
            System.out.println("输入有误!");
        }
        System.out.println("姓名:" + name);
        System.out.println("年龄:" + age);
    }
}

O código de instrução método tentativa esbarro principal () para excepções de captura, a excepção pode ocorrer idade = scanner.nextlnt (); código no bloco try, especificado na captação declaração tipo excepção de excepção, e chamar o objecto excepção printStackTrace () informações método excepção de saída. executar resultados são mostrados abaixo.

---------学生信息录入---------------
请输入学生姓名:
张伟
请输入学生年龄:
120a
java.util.InputMismatchException
    at java.util.Scanner.throwFor(Unknown Source)
    at java.util.Scanner.next(Unknown Source)
    at java.util.Scanner.nextInt(Unknown Source)
    at java.util.Scanner.nextInt(Unknown Source)
输入有误!
姓名:张伟
年龄:0
    at text.text.main(text.java:19)

Várias instruções catch

Se o bloco try, existem muitas declarações exceção ocorre, ocorre uma exceção e o tipo e número. Você pode tentar mais tarde com uma pluralidade de bloco catch. sintaxe multi bloco de captura é como se segue:

try {
    // 可能会发生异常的语句
} catch(ExceptionType e) {
    // 处理异常语句
} catch(ExceptionType e) {
    // 处理异常语句
} catch(ExceptionType e) {
    // 处理异常语句
...
}

No caso em que uma pluralidade de blocos de captura, quando um bloco de captura a uma excepção, o outro bloco de captura deixará de coincidir.

Preste atenção: Quando existe uma pluralidade de relacionamento pai e filho entre o aprisionamento de excepção, para captura quando captar a subclasse excepção geral, recapturar a classe principal. Assim, uma subclasse deve ser anormal na classe principal antes, caso contrário, não subclasse pegar.

public class Test {
    public static void main(String[] args) {
        Date date = readDate();
        System.out.println("读取的日期 = " + date);
    }

    public static Date readDate() {
        FileInputStream readfile = null;
        InputStreamReader ir = null;
        BufferedReader in = null;
        try {
            readfile = new FileInputStream("readme.txt");
            ir = new InputStreamReader(readfile);
            in = new BufferedReader(ir);
            // 读取文件中的一行数据
            String str = in.readLine();
            if (str == null) {
                return null;
            }
            DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
            Date date = df.parse(str);
            return date;
        } catch (FileNotFoundException e) {
            System.out.println("处理FileNotFoundException...");
            e.printStackTrace();
        } catch (IOException e) {
            System.out.println("处理IOException...");
            e.printStackTrace();
        } catch (ParseException e) {
            System.out.println("处理ParseException...");
            e.printStackTrace();
        }
        return null;
    }
}

O fluxo de técnica de código O (Input Output) leu pela cadeia Java I / readme.txt do arquivo e, em seguida, ser data analisada. Como a tecnologia Java I / O não foi introduzida, não incidem sobre a primeira I / detalhes O técnico, você pode olhar para a exceção chamada de método quando aconteceu.

No bloco try da linha de código 12 para chamar o construtor pode ocorrer FileInputStream FileNotFoundException exceção. 16, linha de código chama método readLine BufferedReader fluxo de entrada () de um IOException pode ocorrer. IOException, FileNotFoundException subclasse exceção deve exceção primeira FileNotFoundException captura, ver o código na linha 23, após a captura de uma IOException, veja a linha 26 do código.

Se FileNotFoundException IOException e transposição ordem de captura, a exceção captura FileNotFoundException nunca entrarão no bloco, manipulador de exceção FileNotFoundException nunca é executado. O código na linha 29, com a excepção ParseException IOException e FileNotFoundException relação pais e filhos não é anormal, o ponto anormal pode ser colocado para ParseException captura livremente.

Publicado 457 artigos originais · ganhou elogios 94 · vê 10000 +

Acho que você gosta

Origin blog.csdn.net/weixin_45743799/article/details/104736497
Recomendado
Clasificación