美文网首页
EOS异常相关

EOS异常相关

作者: vergil6 | 来源:发表于2018-10-23 17:35 被阅读132次

eos的异常机制基于 eos/libraries/fc/include/fc/exception已有的异常机制,eos自身派生出来的异常实现在eos/libraries/chain/exceptions.hpp。下面讲几个关于异常的宏

  • 异常抛出

1)EOS_THROW
例如 EOS_THROW(chain::wallet_missing_pub_key_exception, "Public key not found in unlocked wallets {k}", ("k", pk)); 这个宏展开之后 throw chain::wallet_missing_pub_key_exception( fc::log_message( fc::log_context( fc::log_level::error, "wallet_manager.cpp", 242, __FUNCTION__ ), "Public key not found in unlocked wallets{k}", fc::mutable_variant_object()("k", pk) ) );

2)EOS_ASSERT
例如 EOS_ASSERT(!wallets.empty(), wallet_not_available_exception, "You don't have any wallet!");
这个宏展开之后
do
{
if( !(!wallets.empty()) )
do
{
throw wallet_not_available_exception( fc::log_message( fc::log_context( fc::log_level::error, "wallet_manager.cpp", 137, FUNCTION ), "You don't have any wallet!", fc::mutable_variant_object() ) );
} while (0);
} while (0);

  • 异常捕获

FC_CAPTURE_AND_RETHROW,FC_RETHROW_EXCEPTIONS,这2个异常捕获宏都是捕获异常之后添加异常信息再throw,最终在命令行中显示出来的信息按照异常throw的先后顺序打印,最顶端是最开始抛出异常的地方,后面是捕获异常之后添加异常信息的顺序打印,例如 下面在命令行显示的异常信息

// 最先抛的异常 可以看成这是一个assert抛出的异常 显示账号不存在
assertion failure with message: to account does not exist
{"s":"to account does not exist"}
thread-0 wasm_interface.cpp:930 eosio_assert // 抛出异常的代码位置
// FC_RETHROW_EXCEPTIONS添加的异常信息 这里它先添加action执行过程中添加的console信息
pending console output:
{"console":""}
thread-0 apply_context.cpp:65 exec_one // 抛出异常的代码位置

  • 最终捕获

最终通过catch捕获之后xlog(可以输出到std_out,std_error或者日志文件中去,当然可以在命令中把nodeos的输入输出重定向到一个文件)

相关文章

  • EOS异常相关

    eos的异常机制基于 eos/libraries/fc/include/fc/exception已有的异常机制,e...

  • 异常相关

    1、异常体系error / Exception 1)运用java异常处理机制a. try ... catch语句b...

  • EOS开发(一)环境搭建(非Docker)

    EOS相关文档 Git地址:https://github.com/EOSIO/eos Docs:https://d...

  • EOS节点相关

    在EOS超级节点之争 ---- 区块链版权利的游戏一文中,我们探讨了七个个问题。 在上周,这版权力的游戏再度升温:...

  • EOS 相关概念

    EOS账户 EOS系统的两种攻击方式 区块数据结构 交易 公钥 EOS账号的权限 账户权限的更新 EOS账户设计设...

  • #畅聊 MEET.ONE# MEET.ONE的使用体验

    简介:目前EOS钱包之争可谓异常激烈,ET、MEET.ONE,火币钱包、imtoken等都推出自己的EOS钱包,可...

  • 异常相关概念

    [x] Error 和 Exception有什么区别[x] 什么是受检查的异常,什么是运行时异常运行时异常与一般异...

  • 异常/重写相关

  • 第一篇 - 从零到壹学习EOS - 搭建EOS开发环境

    目前来讲,任何学习EOS相关技术的资料都来自https://github.com/EOSIO/eos,可能大家在搭...

  • EOS相关知识科普

    EOS账户权限介绍 首先EOS账户不同于其他公链像比特币、以太坊都是只有一把私钥,为什么EOS需要两把私钥?这是为...

网友评论

      本文标题:EOS异常相关

      本文链接:https://www.haomeiwen.com/subject/qabazftx.html