调试
Tact 中调试智能合约常用的函数列表。
require
检查 condition
并抛出错误,如果 condition
为 false
,则从 error
消息中生成 exit code。 除此之外,别无其他作用。
生成退出代码的算法如下:
- 首先,获取
错误
报文字符串
的SHA-256 哈希值。 - 然后,按此顺序将其值读作一个 32 位 big-endian 数字 modulo 加 。
- 最后,它将被放入
.md
编译报告文件,该文件与其他编译工件一起存放在项目的outputs/
或build/
目录中。
保证生成的退出代码不在为 TVM 和 Tact 合同错误保留的常用 范围内,这样就可以将退出代码与 require()
和任何其他 标准退出代码 区分开来。
使用示例
dump
将参数 arg
打印到合约的调试控制台。 仅当配置文件 中的 “debug “选项设置为 true
时才进行评估,否则不执行任何操作。
可应用于下列类型和值:
Int
。Bool
。地址
- [
单元格
][单元格]、[构建器
][构建器]或[切片
][切片] String
或StringBuilder
map<K, V>
- 选项和
null
值 - void”,当函数没有定义返回值时隐式返回
使用示例
dumpStack
将 持久状态变量的所有值打印到合约的调试控制台。 仅当配置文件 中的 “debug “选项设置为 true
时才进行评估,否则不执行任何操作。
使用示例
throw
是 nativeThrow()
的别名。
nativeThrow
抛出错误代码等于 code
的异常。 当前上下文的执行将停止(“nativeThrow “后的语句将不会执行),控制权将传递给调用栈中的第一个try...catch
块。 如果调用者函数中不存在 try
或 try...catch
块,TVM将终止事务。
试图在 范围之外指定 code
时,会出现 exit code 5异常:整数超出预期范围”。
使用示例
nativeThrowIf
类似于 nativeThrow()
,但会在 condition
等于 true
时有条件地抛出异常。 否则不会扔。
试图在 范围之外指定 code
时,会出现 exit code 5 异常:整数超出预期范围”。
使用示例
nativeThrowUnless
类似于 nativeThrow()
,但会在 condition
等于 false
时有条件地抛出异常。 否则不会扔。
试图在 范围之外指定 code
时,会出现 exit code 5 异常:整数超出预期范围”。
使用示例