Move.

帖子

分享您的知识。

Jackson.
Nov 16, 2023
专家问答

在 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
1
2
分享
评论
.

答案

2
Steven.
Nov 16 2023, 13:40

在 Sui 框架的上下文中,惯例是保留 Move 模块的本地常量和错误,而不是从其他 Move 包中导入它们. 与 Aptos 等其他一些框架不同,Sui 不会创建单独的错误 Move 模块. 使用 Sui 时,建议在使用错误常量的特定模块中定义错误常量和处理函数,避免从外部包导入. 该约定有助于在模块内保持清晰的封装结构,确保采用一致的错误处理方法. 如果要创建相互依赖的软件包,请考虑按照本地化常量和错误的 Sui 惯例,在相关的模块内组织错误常量和处理函数. 这种方法符合框架的设计原则,可确保 Sui 生态系统中具有凝聚力的代码库.

0
评论
.
Jeremy.
Nov 16 2023, 13:46

在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是一个以错误作为参数的公共函数. 只要你想处理错误,就可以调用这个函数.

0
评论
.

你知道答案吗?

请登录并分享。

Move is an executable bytecode language used to implement custom transactions and smart contracts.

148帖子231答案
Sui.X.Peera.

赚取你的 1000 Sui 份额

获取声誉积分,并因帮助 Sui 社区成长而获得奖励。

奖励活动七月