登录 后可观看高清视频

EVM 编程课程 #8 - 错误

233次播放
2025-08-01

视频 AI 总结: 该视频主要讲解了以太坊虚拟机(EVM)中的错误处理机制,区分了 EVM 层面的错误与 Solidity 语言层面的错误。EVM 中,合约执行要么成功(stop, return),要么因错误而终止(revert, invalid)。Solidity 在此基础上增加了用户自定义错误和 panic 的概念。视频还通过代码示例展示了不同错误类型在 EVM 中的表现,以及 Solidity 如何处理这些错误,包括如何使用低级调用(low-level call)或 try-catch 语句来控制错误的传播。

关键信息:

  • EVM 中合约执行结束的方式:正常结束(stop, return)和错误结束(revert, invalid)。
  • stop 停止执行,return 停止执行并返回数据,revert 停止执行并标记为错误,invalid 消耗所有 gas 并停止执行。
  • Solidity 0.8 版本之前,assert 失败会使用 invalid opcode 消耗所有 gas,之后改为抛出 panic。
  • Solidity 中的错误处理:可以自定义错误类型,并使用错误选择器(error selector)来区分不同的错误。
  • Solidity 默认会将合约执行中遇到的错误向上冒泡,导致整个交易回滚。可以使用低级调用或 try-catch 语句来阻止错误的冒泡。
  • Solidity 中 panic 是一种特殊的错误,但与普通错误的处理方式类似,不会导致程序完全停止执行。
  • EVM 可能会遇到一些运行时错误,例如 out of gas、栈溢出、无效跳转目标等,这些错误通常会被视为 revert。