-
Notifications
You must be signed in to change notification settings - Fork 36
/
trycatch-remetente.sol
39 lines (29 loc) · 1.2 KB
/
trycatch-remetente.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
// SPDX-License-Identifier: GPL-3.0
// Example based on https://www.rareskills.io/post/try-catch-solidity
pragma solidity 0.8.25;
import "hardhat/console.sol";
import { Executador } from "./trycatch-executador.sol";
contract Remetente {
event ErroManipulado(uint256 saldo);
Executador public exec;
constructor(address executadorEndereco_) {
exec = Executador(executadorEndereco_);
}
function chamaExecutador() external view {
try exec.testeReversao() {
uint256 tempSaldo = exec.qualSaldoAtual();
console.log("Sucesso! Saldo: ", tempSaldo);
} catch Panic(uint256 codigoErro) {
console.log("codigo do erro que aconteceu: ", codigoErro);
} catch Error(string memory motivoDoErro) {
console.log("Erro aconteceu por este motivo: ", motivoDoErro);
} catch (bytes memory dadoBaixoNivel) {
if (dadoBaixoNivel.length == 0) {
console.log("reversao sem uma mensagem");
}
if (bytes4(abi.encodeWithSignature("ErroCustomizado(uint256)")) == bytes4(dadoBaixoNivel)) {
console.log("ErroCustomizado foi disparado");
}
}
}
}