Questão nº 49

Questão de Tecnologia da Informação · FGV TJ-MS 2024 (nº 49)

FGV2024Técnico de Nível Superior - Analista de SistemasTecnologia da Informação
Gabarito: Aver comentário ↓

Durante o desenvolvimento de um sistema de gestão de estoque para uma empresa de varejo, o desenvolvedor se depara com uma situação desafiadora. O sistema deve garantir que os produtos em estoque nunca tenham uma quantidade negativa, pois isso pode causar problemas sérios de integridade de dados e impactar as operações da empresa. No entanto, enquanto revisava o código do procedimento PL/SQL responsável por atualizar a quantidade de produtos em estoque após uma venda, o desenvolvedor percebeu que não havia tratamento de exceções para o caso em que a quantidade vendida fosse maior que a quantidade disponível em estoque. Diante dessa situação, o desenvolvedor precisa criar uma exceção específica, associá-la a um código de erro personalizado e garantir que o sistema use a nova exceção criada.

Para atingir esse objetivo, o desenvolvedor deverá:

Resposta comentada

Gabarito Alternativa A

Uma exceção personalizada em PL/SQL é como um alarme específico que você cria para sinalizar uma condição de erro particular que não é coberta pelas exceções padrão do Oracle, geralmente relacionada a regras de negócio. Para usá-la, você declara a exceção, associa um código de erro único a ela e a dispara quando a condição de erro ocorre.

  • (A) Correta: Para criar uma exceção específica e associá-la a um código de erro personalizado, o desenvolvedor deve primeiro declarar uma variável do tipo EXCEPTION (ex: quantidade_insuficiente EXCEPTION;), em seguida, usar PRAGMA EXCEPTION_INIT para vincular essa exceção a um código de erro negativo personalizado (ex: PRAGMA EXCEPTION_INIT(quantidade_insuficiente, -20001);), e finalmente, usar a instrução RAISE para lançar essa exceção nomeada quando a condição de erro for detectada no código.
  • (B) Incorreta: Embora seja possível usar RAISE_APPLICATION_ERROR para lançar um erro com um código personalizado, essa abordagem não define uma exceção nomeada que pode ser capturada diretamente pelo seu nome (WHEN minha_excecao THEN ...) dentro de um bloco PL/SQL, o que é o objetivo de "criar uma exceção específica" no contexto de PL/SQL. Armadilha da banca: RAISE_APPLICATION_ERROR cria um erro com código personalizado, o que pode parecer atender ao requisito, mas não cria uma exceção PL/SQL nomeada para ser capturada por nome.
  • (C) Incorreta: Lançar uma exceção personalizada sem associá-la a um código de erro específico via PRAGMA EXCEPTION_INIT não permite que sistemas externos ou outros blocos PL/SQL identifiquem essa exceção de forma padronizada e robusta pelo seu código numérico.
  • (D) Incorreta: Associar um código de erro a uma exceção personalizada usando PRAGMA EXCEPTION_INIT é um passo necessário, mas se a instrução RAISE não for utilizada, a exceção nunca será disparada e, portanto, o sistema não a "usará" para sinalizar o erro.
  • (E) Incorreta: As exceções embutidas do Oracle são para erros de banco de dados genéricos (ex: NO_DATA_FOUND, TOO_MANY_ROWS). A situação descrita (quantidade vendida maior que a disponível) é uma regra de negócio específica que exige uma exceção personalizada para clareza, manutenção e tratamento adequado dentro do contexto da aplicação.

Fonte: FGV TJ-MS 2024 Técnico de Nível Superior - Analista de Sistemas (Caderno Tipo 1). Reproduzida para fins de estudo.

Continue estudando

Estudar é izi

Pratique milhares de questões como esta, de graça, com explicação e gamificação no Quizinho.

Estudar de graça no Quizinho