帖子
分享您的知识。
在 Sui 框架中处理标准错误:最佳实践和建议?
external-crates/move/move-stdlib/sources/error.move
在探索标准错误的实现时,我注意到 Sui 存储库利用了本地的原始移动 std 错误,该错误存储在外部 crate () 中. 但是,crates/sui-framework/packages/sui-framework/Move.toml
由于依赖冲突,我在将这个外部箱子与存储在 () 中的 Sui 模块一起使用时遇到了问题. aptos-move/framework/aptos-framework/Move.toml
将其与Aptos进行比较后,我发现Aptos为错误模块提供了API,要求用户使用AptosFramework(). aptos-move/framework/move-stdlib/sources/error.move
但是,move-stdlib () 中存在错误 Move 模块本身. crates/sui-framework/packages/move-stdlib/sources/error.move is missing
这与 Sui 形成鲜明对比,在 move-stdlib 目录 () 中似乎没有错误模块. 我的问题是,是否有推荐或等效的方法可以将特定错误标记为实际标准错误,可以在Sui框架内的多模块环境中使用?
- Move CLI
答案
2在 Sui 框架的上下文中,惯例是保留 Move 模块的本地常量和错误,而不是从其他 Move 包中导入它们. 与 Aptos 等其他一些框架不同,Sui 不会创建单独的错误 Move 模块. 使用 Sui 时,建议在使用错误常量的特定模块中定义错误常量和处理函数,避免从外部包导入. 该约定有助于在模块内保持清晰的封装结构,确保采用一致的错误处理方法. 如果要创建相互依赖的软件包,请考虑按照本地化常量和错误的 Sui 惯例,在相关的模块内组织错误常量和处理函数. 这种方法符合框架的设计原则,可确保 Sui 生态系统中具有凝聚力的代码库.
在Sui框架中,错误处理机制似乎与Aptos不同. Aptos 为错误移动模块提供了 API,并要求用户使用包含错误模块的 AptosFramework. 但是,在 Sui 中,move-stdlib 目录中似乎缺少错误模块.
鉴于此,如果您想在Sui框架内的多模块环境中将特定错误标记为标准错误,则可能需要创建自己的错误处理模块. 该模块将定义您的应用程序所需的标准错误,并提供抛出和处理这些错误的方法.
以下是如何定义错误处理 Move 模块的基本示例:
module ErrorHandling {
public fun standard_error(message: vector<u8>) {
// Implement your error handling logic here
}
}
在此示例中,standard_error
是一个将消息作为参数的公共函数. 只要你想抛出标准错误,就可以调用这个函数.
你还需要创建一种方法来处理这些错误. 这可以在同一个模块中完成,也可以在单独的模块中完成. 以下是如何处理错误的示例:
module ErrorHandling {
public fun standard_error(message: vector<u8>) {
// Implement your error handling logic here
}
public fun handle_error(error: vector<u8>) {
// Implement your error handling logic here
}
}
在此示例中,handle_error
是一个以错误作为参数的公共函数. 只要你想处理错误,就可以调用这个函数.
你知道答案吗?
请登录并分享。
Move is an executable bytecode language used to implement custom transactions and smart contracts.