Tact 中调试智能合约常用的函数列表。
require
检查 condition
并抛出错误,如果 condition
为 false
,则从 error
消息中生成 exit code。 除此之外,别无其他作用。
生成退出码的算法如下:
- 首先,获取
错误
报文 String
的SHA-256 哈希值。
- 然后,它的值被作为一个32位的 大端 数字读取,计算方式是对 63000 取模后加上 1000,按此顺序进行。
- 最后,它将被放入
.md
编译报告文件,该文件与其他编译工件一起存放在项目的 outputs/
或 build/
目录中。
保证生成的退出码不在为 TVM 和 Tact 合约错误保留的常用 0−255 范围内,这样就可以将退出码与 require()
和任何其他 标准退出码 区分开来。
示例用法:
dump
将参数 arg
打印到合约的调试控制台。 仅当配置文件 中的 “debug “选项设置为 true
时才进行评估,否则不执行任何操作。
可应用于下列类型和值:
示例用法:
dumpStack
将 持久状态变量的所有值打印到合约的调试控制台。 仅当配置文件 中的 “debug “选项设置为 true
时才进行评估,否则不执行任何操作。
用法示例:
throw
是 nativeThrow()
的别名。
nativeThrow
抛出错误代码等于 code
的异常。 当前上下文的执行将停止(nativeThrow
后的语句将不会执行),控制权将传递给调用栈中的第一个try...catch
块。 如果调用者函数中不存在 try
或 try...catch
块,TVM将终止事务。
试图在 0−65535 范围之外指定 code
时,会出现 exit code 5异常:Integer out of expected range
。
示例用法:
nativeThrowIf
类似于 nativeThrow()
,但会在 condition
等于 true
时有条件地抛出异常。 否则不会抛出。
试图在 0−65535 范围之外指定 code
时,会出现 exit code 5 异常:Integer out of expected range
。
示例用法:
nativeThrowUnless
类似于 nativeThrow()
,但会在 condition
等于 false
时有条件地抛出异常。 否则不会抛出。
试图在 0−65535 范围之外指定 code
时,会出现 exit code 5 异常:Integer out of expected range
。
使用示例: