Exceções Flashcards

(49 cards)

1
Q

O que são exceções em PL/SQL?

A

Mecanismos para tratar erros internos de um programa, permitindo desviar o código para uma estrutura específica e exibir mensagens amigáveis em vez de erros técnicos.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Qual a estrutura básica para manipular exceções em PL/SQL?

A

BEGIN - EXCEPTION - END

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Como especificar qual exceção tratar e qual ação tomar?

A

Usando a estrutura WHEN <EXCEÇÃO> THEN dentro do bloco EXCEPTION.</EXCEÇÃO>

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Qual exceção ocorre ao tentar inserir um valor duplicado em uma coluna com restrição de unicidade?

A

DUP_VAL_ON_INDEX

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

O que significa WHEN DUP_VAL_ON_INDEX THEN?

A

Especifica que o bloco de código seguinte será executado apenas quando ocorrer a exceção DUP_VAL_ON_INDEX, que indica a tentativa de inserir um valor duplicado em uma coluna com restrição de unicidade.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Qual a função do comando dbms_output.put_line()?

A

Exibe uma mensagem na saída do script.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

O que é a exceção ACCESS_INTO_NULL?

A

Ocorre quando um programa tenta atribuir valores aos atributos de um objeto não inicializado.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

O que é a exceção CASE_NOT_FOUND?

A

Ocorre quando nenhuma das opções em um bloco CASE é selecionada e não há uma cláusula ELSE.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

O que é a exceção COLLECTION_IS_NULL?

A

Ocorre quando um programa tenta aplicar métodos de coleção (exceto EXISTS) a uma tabela aninhada ou varray não inicializado, ou tenta atribuir valores aos elementos de uma tabela aninhada ou varray não inicializado.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

O que é a exceção CURSOR_ALREADY_OPENED?

A

Ocorre quando um programa tenta abrir um cursor que já está aberto.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

O que é a exceção INVALID_CURSOR?

A

Ocorre quando há uma operação de cursor ilegal.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

O que é a exceção INVALID_NUMBER?

A

Ocorre quando a conversão de uma string de caracteres para um número falha.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

O que é a exceção NO_DATA_FOUND?

A

Ocorre quando uma consulta SELECT de linha única não retorna nenhuma linha ou quando um programa referencia um elemento excluído em uma tabela aninhada ou um elemento não inicializado em um array associativo.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

O que é a exceção PROGRAM_ERROR?

A

Indica que o PL/SQL tem um problema interno.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

O que é a exceção ROWTYPE_MISMATCH?

A

Ocorre quando uma variável de cursor do host e uma variável de cursor PL/SQL envolvidas em uma instrução de atribuição têm tipos de retorno incompatíveis.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

O que é a exceção STORAGE_ERROR?

A

Ocorre quando o PL/SQL fica sem memória ou a memória é corrompida.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
17
Q

O que é a exceção SUBSCRIPT_BEYOND_COUNT?

A

Ocorre quando um programa referencia uma tabela aninhada ou varray usando um número de índice maior do que o número de elementos na coleção.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
18
Q

O que é a exceção SUBSCRIPT_OUTSIDE_LIMIT?

A

Ocorre quando um programa referencia um elemento de tabela aninhada ou varray usando um número de índice que está fora do intervalo legal (por exemplo, -1).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
19
Q

O que é a exceção SYS_INVALID_ROWID?

A

Ocorre quando a conversão de uma string de caracteres em um ROWID universal falha porque a string de caracteres não representa um valor ROWID.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
20
Q

O que é a exceção TOO_MANY_ROWS?

A

Ocorre quando uma consulta SELECT de linha única retorna várias linhas.

21
Q

O que é a exceção VALUE_ERROR?

A

Ocorre quando um erro aritmético, de conversão, truncamento ou restrição de tamanho ocorre.

22
Q

O que é a exceção ZERO_DIVIDE?

A

Ocorre quando um programa tenta dividir um número por zero.

23
Q

Qual a função utilizada para lançar exceções customizadas no PL/SQL?

A

raise_application_error()

24
Q

Qual o intervalo de números de erro que podemos usar para erros customizados com raise_application_error()?

A

-20000 a -20999

25
Por que usar raise_application_error() em vez de dbms_output.put_line() para exibir mensagens de erro?
raise_application_error() formata a mensagem como um erro Oracle padrão (ORA-XXXXX), o que facilita a identificação e tratamento por ferramentas e aplicações que consomem o PL/SQL.
26
Quais são os parâmetros que a função raise_application_error() recebe?
Número do erro (entre -20000 e -20999) e a mensagem de erro customizada.
27
O que fazer quando o erro ORA-01400 é apresentado?
Usar o pragma EXCEPTION_INIT para associar o erro a uma variável de exceção e tratá-lo no bloco EXCEPTION.
28
Qual a função do pragma EXCEPTION_INIT?
Associar um código de erro Oracle (que não está na lista de exceções predefinidas) a uma variável de exceção.
29
Qual o tipo de dado da variável de exceção?
EXCEPTION
30
Onde declarar a variável de exceção?
No bloco IS da procedure, junto com as outras variáveis.
31
Como referenciar a variável de exceção no bloco EXCEPTION?
Usar o nome da variável no WHEN, como WHEN e_IDNULO THEN.
32
Qual a sintaxe do pragma EXCEPTION_INIT?
pragma exception_init(nome_da_variavel, codigo_do_erro); (lembrando que o código do erro deve ser negativo).
33
O que acontece se não usarmos o pragma EXCEPTION_INIT para um erro não cadastrado?
O erro padrão do Oracle será exibido, sem a mensagem personalizada.
34
O que é o pragma EXCEPTION_INIT e qual sua finalidade?
É uma diretiva do PL/SQL que permite associar um código de erro Oracle específico (que não possui uma exceção nomeada predefinida) a uma variável de exceção definida pelo usuário.
35
O que acontece se eu tentar usar uma exceção predefinida (como DUP_VAL_ON_INDEX) no pragma EXCEPTION_INIT?
Não é necessário (e geralmente não é recomendado), pois as exceções predefinidas já possuem seus próprios nomes e podem ser usadas diretamente no bloco EXCEPTION.
36
Depois de usar o pragma EXCEPTION_INIT, como eu uso a variável de exceção no tratamento de erros?
No bloco EXCEPTION, utilize a variável de exceção na cláusula WHEN para identificar e tratar o erro específico. Exemplo: WHEN minha_excecao THEN ...
37
Qual a vantagem de usar o pragma EXCEPTION_INIT?
Permite tratar erros específicos do Oracle que não possuem nomes de exceção predefinidos, possibilitando a criação de mensagens de erro mais claras e um tratamento de erros mais preciso.
38
Trate o erro gerado por esse código.
39
Qual a finalidade do bloco WHEN others THEN em um bloco EXCEPTION?
Serve para capturar erros que não foram previstos ou mapeados individualmente, permitindo que o programa trate exceções inesperadas de forma genérica.
40
Qual a desvantagem de usar apenas o bloco WHEN others THEN para tratar erros?
Ele fornece apenas uma mensagem genérica, dificultando a identificação e correção precisa do erro original.
41
O que acontecerá?
Esse programa não será compilado, porque o erro others tem que estar sempre no final da lista.
42
Qual função interna do Oracle é usada para obter a descrição do erro original?
sqlerrm()
43
Qual a utilidade de exibir o texto original do erro Oracle em mensagens de erro personalizadas?
Ajuda a identificar rapidamente a causa raiz de erros inesperados.
44
Qual é o propósito do bloco WHEN OTHERS THEN em um bloco de tratamento de exceções PL/SQL?
Capturar qualquer exceção que não tenha sido explicitamente tratada por outros blocos WHEN.
45
O que faz o comando raise_application_error(-20020, 'ERRO NÃO ESPERADO !!!! - TEXTO ORIGINAL DO ERRO: ' || sqlerrm());?
Lança uma exceção personalizada com código -20020 e uma mensagem que inclui um texto genérico de erro e a mensagem de erro original do Oracle.
46
Qual a importância de concatenar sqlerrm() à mensagem de erro personalizada?
Fornece informações detalhadas sobre o erro original do Oracle, facilitando a identificação e correção do problema.
47
O que são "erros do usuário" no contexto do Oracle PL/SQL?
São erros que o Oracle não identifica como tal, mas que são considerados erros pela regra de negócio da aplicação.
48
Como tratar "erros do usuário" em PL/SQL?
Declarar uma variável do tipo exception, usar o comando RAISE para forçar a ocorrência da exceção quando a condição de erro é detectada e tratar a exceção na área de EXCEPTION.
49
Qual a função do comando RAISE?
Forçar a ocorrência de uma exceção.