您当前的位置:首页 > IT编程 > C++
| C语言 | Java | VB | VC | python | Android | TensorFlow | C++ | oracle | 学术与代码 | cnn卷积神经网络 | gnn | 图像修复 | Keras | 数据集 | Neo4j | 自然语言处理 | 深度学习 | 医学CAD | 医学影像 | 超参数 | pointnet | pytorch | 异常检测 | Transformers | 情感分类 | 知识图谱 |

自学教程:C++ FC_THROW_EXCEPTION函数代码示例

51自学网 2021-06-01 20:40:49
  C++
这篇教程C++ FC_THROW_EXCEPTION函数代码示例写得很实用,希望能帮到您。

本文整理汇总了C++中FC_THROW_EXCEPTION函数的典型用法代码示例。如果您正苦于以下问题:C++ FC_THROW_EXCEPTION函数的具体用法?C++ FC_THROW_EXCEPTION怎么用?C++ FC_THROW_EXCEPTION使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。

在下文中一共展示了FC_THROW_EXCEPTION函数的29个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。

示例1: variant_from_stream

  variant variant_from_stream( T& in, uint32_t max_depth )  {     if( max_depth == 0 )         FC_THROW_EXCEPTION( parse_error_exception, "Too many nested items in JSON input!" );     skip_white_space(in);     signed char c = in.peek();     switch( c )     {        case '"':           return stringFromStream( in );        case '{':           return objectFromStream<T, parser_type>( in, max_depth - 1 );        case '[':           return arrayFromStream<T, parser_type>( in, max_depth - 1 );        case '-':        case '.':        case '0':        case '1':        case '2':        case '3':        case '4':        case '5':        case '6':        case '7':        case '8':        case '9':           return number_from_stream<T, parser_type>( in );        // null, true, false, or 'warning' / string        case 'n':        case 't':        case 'f':           return token_from_stream( in );        case 0x04: // ^D end of transmission        case EOF:           FC_THROW_EXCEPTION( eof_exception, "unexpected end of file" );        case 0:           if( parser_type == fc::json::broken_nul_parser )              return variant();           FALLTHROUGH        default:           FC_THROW_EXCEPTION( parse_error_exception, "Unexpected char '${c}' in /"${s}/"",                               ("c", c)("s", stringFromToken(in)) );     } }
开发者ID:bitshares,项目名称:fc,代码行数:44,


示例2: group

//    public_key public_key::mult( const fc::sha256& digest ) const//    {//        // get point from this public key//        const EC_POINT* master_pub   = EC_KEY_get0_public_key( my->_key );//        ec_group group(EC_GROUP_new_by_curve_name(NID_secp256k1));////        ssl_bignum z;//        BN_bin2bn((unsigned char*)&digest, sizeof(digest), z);////        // multiply by digest//        ssl_bignum one;//        BN_one(one);//        bn_ctx ctx(BN_CTX_new());////        ec_point result(EC_POINT_new(group));//        EC_POINT_mul(group, result, z, master_pub, one, ctx);////        public_key rtn;//        rtn.my->_key = EC_KEY_new_by_curve_name( NID_secp256k1 );//        EC_KEY_set_public_key(rtn.my->_key,result);////        return rtn;//    }    public_key public_key::add( const fc::sha256& digest )const    {      try {        ec_group group(EC_GROUP_new_by_curve_name(NID_secp256k1));        bn_ctx ctx(BN_CTX_new());        fc::bigint digest_bi( (char*)&digest, sizeof(digest) );        ssl_bignum order;        EC_GROUP_get_order(group, order, ctx);        if( digest_bi > fc::bigint(order) )        {          FC_THROW_EXCEPTION( exception, "digest > group order" );        }        public_key digest_key = private_key::regenerate(digest).get_public_key();        const EC_POINT* digest_point   = EC_KEY_get0_public_key( digest_key.my->_key );        // get point from this public key        const EC_POINT* master_pub   = EC_KEY_get0_public_key( my->_key );//        ssl_bignum z;//        BN_bin2bn((unsigned char*)&digest, sizeof(digest), z);        // multiply by digest//        ssl_bignum one;//        BN_one(one);        ec_point result(EC_POINT_new(group));        EC_POINT_add(group, result, digest_point, master_pub, ctx);        if (EC_POINT_is_at_infinity(group, result))        {          FC_THROW_EXCEPTION( exception, "point at  infinity" );        }        public_key rtn;        rtn.my->_key = EC_KEY_new_by_curve_name( NID_secp256k1 );        EC_KEY_set_public_key(rtn.my->_key,result);        return rtn;      } FC_RETHROW_EXCEPTIONS( debug, "digest: ${digest}", ("digest",digest) );    }
开发者ID:techsharesteam,项目名称:techshares,代码行数:67,


示例3: handle_block

      /**       * @brief allows the application to validate an item prior to broadcasting to peers.       *       * @param sync_mode true if the message was fetched through the sync process, false during normal operation       * @returns true if this message caused the blockchain to switch forks, false if it did not       *       * @throws exception if error validating the item, otherwise the item is safe to broadcast on.       */      virtual bool handle_block(const graphene::net::block_message& blk_msg, bool sync_mode,                                std::vector<fc::uint160_t>& contained_transaction_message_ids) override      { try {         auto latency = graphene::time::now() - blk_msg.block.timestamp;         if (!sync_mode || blk_msg.block.block_num() % 10000 == 0)         {            const auto& witness = blk_msg.block.witness(*_chain_db);            const auto& witness_account = witness.witness_account(*_chain_db);            auto last_irr = _chain_db->get_dynamic_global_properties().last_irreversible_block_num;            ilog("Got block: #${n} time: ${t} latency: ${l} ms from: ${w}  irreversible: ${i} (-${d})",                  ("t",blk_msg.block.timestamp)                 ("n", blk_msg.block.block_num())                 ("l", (latency.count()/1000))                 ("w",witness_account.name)                 ("i",last_irr)("d",blk_msg.block.block_num()-last_irr) );         }         try {            // TODO: in the case where this block is valid but on a fork that's too old for us to switch to,            // you can help the network code out by throwing a block_older_than_undo_history exception.            // when the net code sees that, it will stop trying to push blocks from that chain, but            // leave that peer connected so that they can get sync blocks from us            bool result = _chain_db->push_block(blk_msg.block, (_is_block_producer | _force_validate) ? database::skip_nothing : database::skip_transaction_signatures);            // the block was accepted, so we now know all of the transactions contained in the block            if (!sync_mode)            {               // if we're not in sync mode, there's a chance we will be seeing some transactions               // included in blocks before we see the free-floating transaction itself.  If that               // happens, there's no reason to fetch the transactions, so  construct a list of the               // transaction message ids we no longer need.               // during sync, it is unlikely that we'll see any old               for (const processed_transaction& transaction : blk_msg.block.transactions)               {                  graphene::net::trx_message transaction_message(transaction);                  contained_transaction_message_ids.push_back(graphene::net::message(transaction_message).id());               }            }            return result;         } catch ( const graphene::chain::unlinkable_block_exception& e ) {            // translate to a graphene::net exception            elog("Error when pushing block:/n${e}", ("e", e.to_detail_string()));            FC_THROW_EXCEPTION(graphene::net::unlinkable_block_exception, "Error when pushing block:/n${e}", ("e", e.to_detail_string()));         } catch( const fc::exception& e ) {            elog("Error when pushing block:/n${e}", ("e", e.to_detail_string()));            throw;         }         if( !_is_finished_syncing && !sync_mode )         {            _is_finished_syncing = true;            _self->syncing_finished();         }      } FC_CAPTURE_AND_RETHROW( (blk_msg)(sync_mode) ) }
开发者ID:unionsharesteam,项目名称:unionshares,代码行数:64,


示例4: remove

        void remove( const Key& k )        {          try          {             FC_ASSERT( _db != nullptr );             std::vector<char> kslice = fc::raw::pack( k );             ldb::Slice ks( kslice.data(), kslice.size() );             auto status = _db->Delete( ldb::WriteOptions(), ks );             if( status.IsNotFound() )             {               FC_THROW_EXCEPTION( key_not_found_exception, "unable to find key ${key}", ("key",k) );             }             if( !status.ok() )             {                 FC_THROW_EXCEPTION( exception, "database error: ${msg}", ("msg", status.ToString() ) );             }          } FC_RETHROW_EXCEPTIONS( warn, "error removing ${key}", ("key",k) );        }
开发者ID:Coinfo,项目名称:bitshares_toolkit,代码行数:19,


示例5: add

 static void add( fc::sha256::encoder &hasher, std::string const &data ) {     if( data.size() < 253 ) {         char len = data.size();         hasher.write( &len, sizeof(len) );     } else {         FC_THROW_EXCEPTION( fc::invalid_arg_exception, "String '" + data + "' too long" );     }     hasher.write( data.c_str(), data.size() ); }
开发者ID:NewportHighlander,项目名称:PTS,代码行数:10,


示例6: FC_ASSERT

 void private_key::sign( const sha1& digest, array<char,2048/8>& sig )const {    FC_ASSERT( (size_t(RSA_size(my->rsa)) <= sizeof(sig)), "Invalid RSA size" );     uint32_t slen = 0;    if( 1 != RSA_sign( NID_sha1, (uint8_t*)&digest,                       20, (unsigned char*)&sig, &slen, my->rsa ) )    {        FC_THROW_EXCEPTION( exception, "rsa sign failed with ${message}", ("message",fc::string(ERR_error_string( ERR_get_error(),NULL))) );    } }
开发者ID:FollowMyVote,项目名称:fc,代码行数:10,


示例7: if

void client_impl::debug_advance_time(int32_t delta_time, const std::string& unit /* = "seconds" */){   if (unit == "blocks")      delta_time *= BTS_BLOCKCHAIN_BLOCK_INTERVAL_SEC;   else if (unit == "rounds")      delta_time *= BTS_BLOCKCHAIN_NUM_DELEGATES * BTS_BLOCKCHAIN_BLOCK_INTERVAL_SEC;   else if (unit != "seconds")      FC_THROW_EXCEPTION(fc::invalid_arg_exception, "unit must be /"seconds/", /"blocks/", or /"rounds/", was: /"${unit}/"", ("unit", unit));   bts::blockchain::advance_time(delta_time);}
开发者ID:NewportHighlander,项目名称:PTS,代码行数:10,


示例8: import_electrum_wallet

 std::vector<fc::ecc::private_key> import_electrum_wallet( const fc::path& wallet_dat, const std::string& passphrase ) { try {     std::vector<fc::ecc::private_key> keys;     electrumwallet wallet( wallet_dat.to_native_ansi_path());     if( !wallet.ok() ) FC_THROW_EXCEPTION( exception, "invalid electrum wallet");     wallet.derivekeys( passphrase );     return wallet.keys();   }   FC_RETHROW_EXCEPTIONS( warn, "" ) }
开发者ID:BrownBear2,项目名称:BitShares,代码行数:10,


示例9: null_terminated_ptr_impl

/** * class to represent an in-wasm-memory char array that must be null terminated */inline null_terminated_ptr null_terminated_ptr_impl(interpreter_interface* interface, uint32_t ptr){   char *value = interface->get_validated_pointer(ptr, 1);   const char* p = value;   const char* const top_of_memory = interface->memory.data + interface->current_memory_size;   while(p < top_of_memory)      if(*p++ == '/0')         return null_terminated_ptr(value);   FC_THROW_EXCEPTION(wasm_execution_error, "unterminated string");}
开发者ID:milk57618,项目名称:eos,代码行数:14,


示例10: begin

        iterator begin()         { try {           iterator itr( _db->NewIterator( ldb::ReadOptions() ) );           itr._it->SeekToFirst();           if( itr._it->status().IsNotFound() )           {             FC_THROW_EXCEPTION( key_not_found_exception, "" );           }           if( !itr._it->status().ok() )           {               FC_THROW_EXCEPTION( exception, "database error: ${msg}", ("msg", itr._it->status().ToString() ) );           }           if( itr.valid() )           {              return itr;           }           return iterator();        } FC_RETHROW_EXCEPTIONS( warn, "error seeking to first" ) }
开发者ID:BrownBear2,项目名称:BitShares,代码行数:20,


示例11: memcpy

   pts_address::pts_address( const std::string& base58str )   {      std::vector<char> v = fc::from_base58( fc::string(base58str) );      if( v.size() )         memcpy( addr.data, v.data(), std::min<size_t>( v.size(), sizeof(addr) ) );      if( !is_valid() )      {         FC_THROW_EXCEPTION( exception, "invalid pts_address ${a}", ("a", base58str) );        }   }
开发者ID:NimroDeer,项目名称:BitShares,代码行数:11,


示例12: fetch

 Value fetch( const Key& key ) {   try {      ldb::Slice key_slice( (char*)&key, sizeof(key) );      std::string value;      auto status = _db->Get( ldb::ReadOptions(), key_slice, &value );      if( status.IsNotFound() )      {        FC_THROW_EXCEPTION( key_not_found_exception, "unable to find key ${key}", ("key",key) );      }      if( !status.ok() )      {          FC_THROW_EXCEPTION( exception, "database error: ${msg}", ("msg", status.ToString() ) );      }      fc::datastream<const char*> datastream(value.c_str(), value.size());      Value tmp;      fc::raw::unpack(datastream, tmp);      return tmp;   } FC_RETHROW_EXCEPTIONS( warn, "error fetching key ${key}", ("key",key) ); }
开发者ID:Doken-Tokuyama,项目名称:BitShares,代码行数:20,


示例13: fetch

        Value fetch( const Key& key )        { try {           FC_ASSERT( is_open(), "Database is not open!" );           ldb::Slice key_slice( (char*)&key, sizeof(key) );           std::string value;           auto status = _db->Get( _read_options, key_slice, &value );           if( status.IsNotFound() )           {             FC_THROW_EXCEPTION( fc::key_not_found_exception, "unable to find key ${key}", ("key",key) );           }           if( !status.ok() )           {               FC_THROW_EXCEPTION( level_pod_map_failure, "database error: ${msg}", ("msg", status.ToString() ) );           }           fc::datastream<const char*> datastream(value.c_str(), value.size());           Value tmp;           fc::raw::unpack(datastream, tmp);           return tmp;        } FC_RETHROW_EXCEPTIONS( warn, "error fetching key ${key}", ("key",key) ); }
开发者ID:ElleryHao,项目名称:Goopal,代码行数:20,


示例14: fetch

        Value fetch( const Key& k )        { try {           FC_ASSERT( is_open(), "Database is not open!" );           std::vector<char> kslice = fc::raw::pack( k );           ldb::Slice ks( kslice.data(), kslice.size() );           std::string value;           auto status = _db->Get( ldb::ReadOptions(), ks, &value );           if( status.IsNotFound() )           {             FC_THROW_EXCEPTION( fc::key_not_found_exception, "unable to find key ${key}", ("key",k) );           }           if( !status.ok() )           {               FC_THROW_EXCEPTION( db_exception, "database error: ${msg}", ("msg", status.ToString() ) );           }           fc::datastream<const char*> ds(value.c_str(), value.size());           Value tmp;           fc::raw::unpack(ds, tmp);           return tmp;        } FC_RETHROW_EXCEPTIONS( warn, "error fetching key ${key}", ("key",k) ); }
开发者ID:andrewisplinghoff,项目名称:bitsharesx,代码行数:21,


示例15: FC_ASSERT

 asset& asset::operator -= ( const asset& o ) {    FC_ASSERT( asset_id == o.asset_id );    auto old = *this;;    amount -= o.amount;    if( amount > old.amount )     {       FC_THROW_EXCEPTION( addition_underthrow, "asset addition underflow  ${a} - ${b} = ${c}",                            ("a", old)("b",o)("c",*this) );    }    return *this; }
开发者ID:HackFisher,项目名称:bitshares_snapshot,代码行数:12,


示例16: parseInt

 fc::variant parseInt( const std::string& token, size_t start ) {     static const CharValueTable ctbl;     static const uint64_t INT64_MAX_PLUS_ONE = static_cast<uint64_t>(INT64_MAX) + 1;          size_t i = start, n = token.length();     if( i >= n )         FC_THROW_EXCEPTION( parse_error_exception, "zero-length integer" );          uint64_t val = 0;     uint64_t maxb4mul = UINT64_MAX / base;          while(true)     {         char c = token[i];         uint8_t vc = ctbl[c];         if( vc == 0xFF )             FC_THROW_EXCEPTION( parse_error_exception, "illegal character {c} in integer of base {b}", ("c", c)("b", base) );         if( val > maxb4mul )             FC_THROW_EXCEPTION( parse_error_exception, "integer literal overflow" );         val *= base;         uint64_t newval = val + vc;         if( newval < val )             FC_THROW_EXCEPTION( parse_error_exception, "integer literal overflow" );         val = newval;         i++;         if( i >= n )             break;     }     if( token[0] == '-' )     {         if( val > INT64_MAX_PLUS_ONE )             FC_THROW_EXCEPTION( parse_error_exception, "negative integer literal overflow" );         // special cased to avoid trying to compute -INT64_MIN which is probably undefined or something         if( val == INT64_MAX_PLUS_ONE )             return fc::variant( INT64_MIN );         return fc::variant( -static_cast<int64_t>(val) );     }     return fc::variant( val ); }
开发者ID:bitshares,项目名称:fc,代码行数:40,


示例17: sizeof

block_id_type block_database::fetch_block_id( uint32_t block_num )const{   index_entry e;   auto index_pos = sizeof(e)*block_num;   _block_num_to_pos.seekg( 0, _block_num_to_pos.end );   if ( _block_num_to_pos.tellg() <= index_pos )      FC_THROW_EXCEPTION(fc::key_not_found_exception, "Block number ${block_num} not contained in block database", ("block_num", block_num));   _block_num_to_pos.seekg( index_pos );   _block_num_to_pos.read( (char*)&e, sizeof(e) );   return e.block_id;}
开发者ID:todasun,项目名称:graphene,代码行数:13,


示例18: begin

        iterator begin()        { try {           FC_ASSERT( is_open(), "Database is not open!" );           iterator itr( _db->NewIterator( _iter_options ) );           itr._it->SeekToFirst();           if( itr._it->status().IsNotFound() )           {             FC_THROW_EXCEPTION( fc::key_not_found_exception, "" );           }           if( !itr._it->status().ok() )           {               FC_THROW_EXCEPTION( level_pod_map_failure, "database error: ${msg}", ("msg", itr._it->status().ToString() ) );           }           if( itr.valid() )           {              return itr;           }           return iterator();        } FC_RETHROW_EXCEPTIONS( warn, "error seeking to first" ) }
开发者ID:ElleryHao,项目名称:Goopal,代码行数:22,


示例19: handle_message

        /* ===================================================== */           void handle_message( const connection_ptr& con, const message& m )        {           try {           chan_data& cdat = get_channel_data(con);            ilog( "${msg_type}", ("msg_type", (bitname::message_type)m.msg_type ) );                      switch( (bitname::message_type)m.msg_type )           {               case name_inv_msg:                 handle_name_inv( con, cdat, m.as<name_inv_message>() );                 break;               case block_inv_msg:                 handle_block_inv( con, cdat, m.as<block_inv_message>() );                 break;               case get_name_inv_msg:                 handle_get_name_inv( con, cdat, m.as<get_name_inv_message>() );                 break;               case get_headers_msg:                 handle_get_headers( con, cdat, m.as<get_headers_message>() );                 break;               case get_block_msg:                 handle_get_block( con, cdat, m.as<get_block_message>() );                 break;               case get_block_index_msg:                 handle_get_block_index( con, cdat, m.as<get_block_index_message>() );                 break;               case get_name_header_msg:                 handle_get_name( con, cdat, m.as<get_name_header_message>() );                 break;               case name_header_msg:                 handle_name( con, cdat, m.as<name_header_message>() );                 break;               case block_index_msg:                 handle_block_index( con, cdat, m.as<block_index_message>() );                 break;               case block_msg:                 handle_block( con, cdat, m.as<block_message>() );                 break;               case headers_msg:                 handle_headers( con, cdat, m.as<headers_message>() );                 break;               default:                 FC_THROW_EXCEPTION( exception, "unknown bitname message type ${msg_type}", ("msg_type", m.msg_type ) );           }          }           catch ( fc::exception& e )          {            wlog( "${e}  ${from}", ("e",e.to_detail_string())("from",con->remote_endpoint()) );          }        }  // handle_message
开发者ID:1manStartup,项目名称:BitShares,代码行数:52,


示例20: electrumwallet

      electrumwallet( std::string path ):encryption(false),seed_version(""),masterkey("")      {         std::ifstream in(path, std::ios_base::in);         std::string storage;         in.unsetf( std::ios::skipws );         std::copy( std::istream_iterator<char>(in),                    std::istream_iterator<char>(),                    std::back_inserter(storage) );         bts::parser<std::string::const_iterator> grammar;         bts::python_dict_type_t dict;         std::string::const_iterator iter = storage.begin();         std::string::const_iterator end = storage.end();         bool r = phrase_parse( iter, end, grammar, ascii::space, dict );         if( r && iter == end )         {            for( auto &item : dict.items )            {               boost::to_lower( item.first );               if( item.first == "use_encryption" )               {                  auto useenc = boost::get<std::string>( item.second );                  boost::to_lower(useenc);                  if ( useenc == "true" )                     encryption = true;               }               else if( item.first == "seed_version" )               {                  seed_version = boost::get<std::string>( item.second );               }               else if( item.first == "seed" )               {                  seed = boost::get<std::string>( item.second );               }               else if( item.first == "master_public_key" )               {                  masterkey = boost::get<std::string>( item.second );               }               else if( item.first == "accounts" )               {                  accounts.items = boost::get<bts::python_dict_type_t>( item.second ).items;               }            }         }         else         {            FC_THROW_EXCEPTION( exception, "failed to parse electrum wallet" );         }      }
开发者ID:BrownBear2,项目名称:BitShares,代码行数:51,


示例21: EC_KEY_new_by_curve_name

 public_key::public_key( const public_key_data& dat ) {   const char* front = &dat.data[0];   if( *front == 0 ){}   else   {      my->_key = EC_KEY_new_by_curve_name( NID_secp256k1 );      my->_key = o2i_ECPublicKey( &my->_key, (const unsigned char**)&front, sizeof(public_key_data) );      if( !my->_key )      {        FC_THROW_EXCEPTION( exception, "error decoding public key", ("s", ERR_error_string( ERR_get_error(), nullptr) ) );      }   } }
开发者ID:techsharesteam,项目名称:techshares,代码行数:14,


示例22: store

        void store( const Key& k, const Value& v, bool sync = false )        { try {           FC_ASSERT( is_open(), "Database is not open!" );           ldb::Slice ks( (char*)&k, sizeof(k) );           auto vec = fc::raw::pack(v);           ldb::Slice vs( vec.data(), vec.size() );           auto status = _db->Put( sync ? _sync_options : _write_options, ks, vs );           if( !status.ok() )           {               FC_THROW_EXCEPTION( level_pod_map_failure, "database error: ${msg}", ("msg", status.ToString() ) );           }        } FC_RETHROW_EXCEPTIONS( warn, "error storing ${key} = ${value}", ("key",k)("value",v) ); }
开发者ID:ElleryHao,项目名称:Goopal,代码行数:14,


示例23: FC_ASSERT

  asset& asset::operator += ( const asset& o )  {     FC_ASSERT( unit == o.unit );     auto old = *this;     amount += o.amount;     if( amount < old.amount )      {       FC_THROW_EXCEPTION( exception, "asset addition overflowed  ${a} + ${b} = ${c}",                             ("a", old)("b",o)("c",*this) );     }     return *this;  }
开发者ID:ArtRichards,项目名称:bitshares_toolkit,代码行数:14,


示例24: interactive_open_wallet

            fc::variant interactive_open_wallet()            {              if( _client->get_wallet()->is_open() ) return fc::variant( true );              std::cout << "A wallet must be open to execute this command. You can:/n";              std::cout << "(o) Open an existing wallet/n";              std::cout << "(c) Create a new wallet/n";              std::cout << "(q) Abort command/n";              std::string choice = _self->get_line("Choose [o/c/q]: ");              if (choice == "c")              {                std::string wallet_name = _self->get_line("new wallet name [default]: ");                if (wallet_name.empty()) wallet_name = "default";                fc::variants arguments { wallet_name };                try                {                    return execute_interactive_command( "wallet_create", arguments );                }                catch( const fc::canceled_exception& )                {                }              }              else if (choice == "o")              {                std::string wallet_name = _self->get_line("wallet name [default]: ");                if (wallet_name.empty()) wallet_name = "default";                fc::variants arguments { wallet_name };                try                {                    return execute_interactive_command( "wallet_open", arguments );                }                catch( const fc::canceled_exception& )                {                }              }              else if (choice == "q")              {                FC_THROW_EXCEPTION(canceled_exception, "");              }              else              {                  std::cout << "Wrong answer!/n";              }              return fc::variant( false );            }
开发者ID:fedaykinofdune,项目名称:bitshares_toolkit,代码行数:50,


示例25: assert

block_id_type block_database::fetch_block_id( uint32_t block_num )const{   assert( block_num != 0 );   index_entry e;   int64_t index_pos = sizeof(e) * int64_t(block_num);   _block_num_to_pos.seekg( 0, _block_num_to_pos.end );   if ( _block_num_to_pos.tellg() <= index_pos )      FC_THROW_EXCEPTION(fc::key_not_found_exception, "Block number ${block_num} not contained in block database", ("block_num", block_num));   _block_num_to_pos.seekg( index_pos );   _block_num_to_pos.read( (char*)&e, sizeof(e) );   FC_ASSERT( e.block_id != block_id_type(), "Empty block_id in block_database (maybe corrupt on disk?)" );   return e.block_id;}
开发者ID:FollowMyVote,项目名称:graphene,代码行数:15,


示例26: store

 void store( const Key& k, const Value& v ) {   try   {      ldb::Slice ks( (char*)&k, sizeof(k) );      auto vec = fc::raw::pack(v);      ldb::Slice vs( vec.data(), vec.size() );            auto status = _db->Put( ldb::WriteOptions(), ks, vs );      if( !status.ok() )      {          FC_THROW_EXCEPTION( exception, "database error: ${msg}", ("msg", status.ToString() ) );      }   } FC_RETHROW_EXCEPTIONS( warn, "error storing ${key} = ${value}", ("key",k)("value",v) ); }
开发者ID:Doken-Tokuyama,项目名称:BitShares,代码行数:15,


示例27: stringFromStream

   std::string stringFromStream( T& in )   {      fc::stringstream token;      try      {         char c = in.peek();         if( c != '"' )            FC_THROW_EXCEPTION( parse_error_exception,                                            "Expected '/"' but read '${char}'",                                            ("char", string(&c, (&c) + 1) ) );         in.get();         while( true )         {            switch( c = in.peek() )            {               case '//':                  token << parseEscape( in );                  break;               case 0x04:                  FC_THROW_EXCEPTION( parse_error_exception, "EOF before closing '/"' in string '${token}'",                                                   ("token", token.str() ) );               case '"':                  in.get();                  return token.str();               default:                  token << c;                  in.get();            }         }         FC_THROW_EXCEPTION( parse_error_exception, "EOF before closing '/"' in string '${token}'",                                          ("token", token.str() ) );       } FC_RETHROW_EXCEPTIONS( warn, "while parsing token '${token}'",                                          ("token", token.str() ) );   }
开发者ID:bitshares,项目名称:fc,代码行数:36,


示例28: handle_block

      /**       * @brief allows the application to validate an item prior to broadcasting to peers.       *       * @param sync_mode true if the message was fetched through the sync process, false during normal operation       * @returns true if this message caused the blockchain to switch forks, false if it did not       *       * @throws exception if error validating the item, otherwise the item is safe to broadcast on.       */      virtual bool handle_block(const graphene::net::block_message& blk_msg, bool sync_mode,                                std::vector<fc::uint160_t>& contained_transaction_message_ids) override      { try {         if (sync_mode && blk_msg.block.block_num() % 10000 == 0)         {            ilog("Syncing Blockchain --- Got block: #${n} time: ${t}",                 ("t",blk_msg.block.timestamp)                 ("n", blk_msg.block.block_num()) );         }         time_point_sec now = graphene::time::now();         uint64_t max_accept_time = now.sec_since_epoch();         max_accept_time += allow_future_time;         FC_ASSERT( blk_msg.block.timestamp.sec_since_epoch() <= max_accept_time );         try {            // TODO: in the case where this block is valid but on a fork that's too old for us to switch to,            // you can help the network code out by throwing a block_older_than_undo_history exception.            // when the net code sees that, it will stop trying to push blocks from that chain, but            // leave that peer connected so that they can get sync blocks from us            bool result = _chain_db->push_block(blk_msg.block, (_is_block_producer | _force_validate) ? database::skip_nothing : database::skip_transaction_signatures);            if( !sync_mode && blk_msg.block.transactions.size() )            {               ilog( "Got ${t} transactions from network on block ${b}",                  ("t", blk_msg.block.transactions.size())                  ("b", blk_msg.block.block_num()) );            }            return result;         } catch ( const steemit::chain::unlinkable_block_exception& e ) {            // translate to a graphene::net exception            elog("Error when pushing block:/n${e}", ("e", e.to_detail_string()));            FC_THROW_EXCEPTION(graphene::net::unlinkable_block_exception, "Error when pushing block:/n${e}", ("e", e.to_detail_string()));         } catch( const fc::exception& e ) {            elog("Error when pushing block:/n${e}", ("e", e.to_detail_string()));            throw;         }         if( !_is_finished_syncing && !sync_mode )         {            _is_finished_syncing = true;            _self->syncing_finished();         }      } FC_CAPTURE_AND_RETHROW( (blk_msg)(sync_mode) ) }
开发者ID:Chugumoto,项目名称:steem,代码行数:56,


示例29: store

        void store( const Key& k, const Value& v, bool sync = false )        { try {           FC_ASSERT( is_open(), "Database is not open!" );           std::vector<char> kslice = fc::raw::pack( k );           ldb::Slice ks( kslice.data(), kslice.size() );           auto vec = fc::raw::pack(v);           ldb::Slice vs( vec.data(), vec.size() );           auto status = _db->Put( ldb::WriteOptions(), ks, vs );           if( !status.ok() )           {               FC_THROW_EXCEPTION( db_exception, "database error: ${msg}", ("msg", status.ToString() ) );           }        } FC_RETHROW_EXCEPTIONS( warn, "error storing ${key} = ${value}", ("key",k)("value",v) ); }
开发者ID:andrewisplinghoff,项目名称:bitsharesx,代码行数:16,



注:本文中的FC_THROW_EXCEPTION函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


C++ FColor函数代码示例
C++ FC_RETHROW_EXCEPTIONS函数代码示例
万事OK自学网:51自学网_软件自学网_CAD自学网自学excel、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。