Quiz : REQUIRED AND REVERT
1. Em Solidity, o que acontece quando uma função marca explicitamente um erro com `revert`?
a) A execução da função continua normalmente, mas um aviso é gerado no console.
b) A execução da função é revertida imediatamente e todas as alterações de estado são desfeitas.
c) A função retorna um valor de erro que pode ser tratado pelo contrato chamador.
2. Qual é a principal razão para usar `revert` em contratos inteligentes?
a) Para interromper a execução do contrato e lançar um erro personalizado.
b) Para forçar uma exceção não tratada e encerrar o contrato abruptamente.
c) Para notificar o usuário sobre erros de execução do contrato.
3. Quando você pode utilizar `require` em vez de `revert` em Solidity?
a) Quando você quer retornar um valor específico ao invés de lançar uma exceção.
b) Quando você quer apenas registrar um aviso no console, mas continuar a execução.
c) Quando você quer impor condições para a execução de uma função e reverter se essas condições não forem atendidas.
4. O que o modificador `required` faz em Solidity?
a) Ele verifica se uma variável foi inicializada corretamente antes de permitir a execução de uma função.
b) Ele define um requisito que deve ser cumprido para que a função seja executada com sucesso.
c) Ele reverte a execução de uma função se uma condição específica não for atendida.
5. Qual é a diferença principal entre `required` e `assert` em Solidity?
a) `required` é usado para verificar condições de entrada em uma função, enquanto `assert` é usado para verificar invariantes internas do contrato.
b) `required` é usado para interromper a execução de uma função se uma condição não for atendida, enquanto `assert` é usado para validar expressões internas do contrato.
c) `required` e `assert` são sinônimos em Solidity e podem ser usados de forma intercambiável.
6. Quando é mais apropriado usar `required` em vez de `revert` em Solidity?
a) Quando a verificação é sobre condições externas, como entradas de usuário.
b) Quando a validação está relacionada a invariantes internos do contrato.
c) Não há diferença significativa entre eles em termos de uso apropriado.
7. Como o bloco de código a seguir, em Solidity, trata a validação de um índice de um array?
a) Reverte a execução do contrato se o índice fornecido for maior ou igual ao comprimento do array, lançando uma exceção com uma mensagem de erro personalizada.
b) Ignora a condição do índice e continua a execução do contrato normalmente, independentemente do valor fornecido.
c) Retorna um aviso no console se o índice estiver fora dos limites do array, mas não reverte a execução do contrato.
8. Como o bloco de código a seguir, em Solidity, trata a validação de um índice de um array?
a) Interrompe a execução do contrato se o índice fornecido for maior do que o comprimento do array, lançando uma exceção com a mensagem "INDEX INVALID".
b) Continua a execução do contrato mesmo se o índice estiver fora dos limites do array, mas imprime um aviso no console.
c) Retorna um valor booleano indicando se o índice fornecido é válido ou não, sem interromper a execução do contrato.
Respostas:
1. b) A execução da função é revertida imediatamente e todas as alterações de estado são desfeitas.
2. a) Para interromper a execução do contrato e lançar um erro personalizado.
3. c) Quando você quer impor condições para a execução de uma função e reverter se essas condições não forem atendidas.
4. b) Ele define um requisito que deve ser cumprido para que a função seja executada com sucesso.
5. a) `required` é usado para verificar condições de entrada em uma função, enquanto `assert` é usado para verificar invariantes internas do contrato.
6. a) Quando a verificação é sobre condições externas, como entradas de usuário.
7. a) Reverte a execução do contrato se o índice fornecido for maior ou igual ao comprimento do array, lançando uma exceção com uma mensagem de erro personalizada.
8.a) Interrompe a execução do contrato se o índice fornecido for maior do que o comprimento do array, lançando uma exceção com a mensagem "INDEX INVALID".
Last updated