fix bugs
This commit is contained in:
parent
f19821dae1
commit
68e949a699
3 changed files with 14 additions and 6 deletions
|
|
@ -13,6 +13,7 @@ namespace fc {
|
||||||
class error_frame {
|
class error_frame {
|
||||||
public:
|
public:
|
||||||
error_frame( const fc::string& file, uint64_t line, const fc::string& method, const fc::string& desc, fc::value m );
|
error_frame( const fc::string& file, uint64_t line, const fc::string& method, const fc::string& desc, fc::value m );
|
||||||
|
error_frame( bool detail, const fc::string& file, uint64_t line, const fc::string& method, const fc::string& desc, fc::value m );
|
||||||
error_frame():file("unknown-file"),line(0){}
|
error_frame():file("unknown-file"),line(0){}
|
||||||
error_frame(const error_frame& );
|
error_frame(const error_frame& );
|
||||||
error_frame(error_frame&& );
|
error_frame(error_frame&& );
|
||||||
|
|
@ -27,8 +28,9 @@ namespace fc {
|
||||||
fc::string file;
|
fc::string file;
|
||||||
int64_t line;
|
int64_t line;
|
||||||
fc::string method;
|
fc::string method;
|
||||||
fc::string time;
|
|
||||||
fc::optional<fc::value> meta;
|
fc::optional<fc::value> meta;
|
||||||
|
fc::string time;
|
||||||
|
bool detail;
|
||||||
};
|
};
|
||||||
typedef fc::vector<error_frame> error_context;
|
typedef fc::vector<error_frame> error_context;
|
||||||
|
|
||||||
|
|
@ -40,6 +42,7 @@ namespace fc {
|
||||||
class error_report {
|
class error_report {
|
||||||
public:
|
public:
|
||||||
error_report();
|
error_report();
|
||||||
|
error_report( const fc::string& desc, fc::value meta = fc::value() );
|
||||||
error_report( const fc::string& file, uint64_t line, const fc::string& method, const fc::string& desc, fc::value meta = fc::value() );
|
error_report( const fc::string& file, uint64_t line, const fc::string& method, const fc::string& desc, fc::value meta = fc::value() );
|
||||||
|
|
||||||
error_frame& current();
|
error_frame& current();
|
||||||
|
|
@ -60,11 +63,12 @@ namespace fc {
|
||||||
} // namespace fc
|
} // namespace fc
|
||||||
|
|
||||||
#include <fc/reflect.hpp>
|
#include <fc/reflect.hpp>
|
||||||
FC_REFLECT( fc::error_frame, (desc)(file)(line)(method)(time)(meta) )
|
FC_REFLECT( fc::error_frame, (desc)(file)(line)(method)(time)(meta)(detail) )
|
||||||
FC_REFLECT( fc::error_report, (stack) )
|
FC_REFLECT( fc::error_report, (stack) )
|
||||||
|
|
||||||
#define FC_REPORT( X, ... ) fc::error_report X( __FILE__, __LINE__, __func__, __VA_ARGS__ )
|
#define FC_REPORT( X, ... ) fc::error_report X( __FILE__, __LINE__, __func__, __VA_ARGS__ )
|
||||||
#define FC_THROW_REPORT( ... ) FC_THROW( fc::error_report( __FILE__, __LINE__, __func__, __VA_ARGS__ ))
|
#define FC_THROW_REPORT( ... ) FC_THROW( fc::error_report( __FILE__, __LINE__, __func__, __VA_ARGS__ ))
|
||||||
#define FC_REPORT_CURRENT(ER, ... ) (ER).pop_frame().push_frame( __FILE__, __LINE__, __func__, __VA_ARGS__ )
|
#define FC_REPORT_CURRENT(ER, ... ) (ER).pop_frame().push_frame( __FILE__, __LINE__, __func__, __VA_ARGS__ )
|
||||||
#define FC_REPORT_PUSH( ER, ... ) (ER).push_frame( __FILE__, __LINE__, __func__, __VA_ARGS__ );
|
#define FC_REPORT_PUSH( ER, ... ) (ER).push_frame( __FILE__, __LINE__, __func__, __VA_ARGS__ );
|
||||||
|
#define FC_REPORT_PUSH_DETAIL( ER, ... ) (ER).push_frame( true, __FILE__, __LINE__, __func__, __VA_ARGS__ );
|
||||||
#define FC_REPORT_POP(ER) (ER).pop_frame()
|
#define FC_REPORT_POP(ER) (ER).pop_frame()
|
||||||
|
|
|
||||||
|
|
@ -8,21 +8,24 @@
|
||||||
namespace fc {
|
namespace fc {
|
||||||
|
|
||||||
error_frame::error_frame( const fc::string& f, uint64_t l, const fc::string& m, const fc::string& d, fc::value met )
|
error_frame::error_frame( const fc::string& f, uint64_t l, const fc::string& m, const fc::string& d, fc::value met )
|
||||||
:desc(d),file(fc::path(f).filename().generic_string()),line(l),method(m),meta(fc::move(met)),time(fc::time_point::now()){}
|
:desc(d),file(fc::path(f).filename().generic_string()),line(l),method(m),meta(fc::move(met)),time(fc::time_point::now()),detail(false){}
|
||||||
|
|
||||||
|
error_frame::error_frame( bool is_detail, const fc::string& f, uint64_t l, const fc::string& m, const fc::string& d, fc::value met )
|
||||||
|
:desc(d),file(fc::path(f).filename().generic_string()),line(l),method(m),meta(fc::move(met)),time(fc::time_point::now()),detail(is_detail){}
|
||||||
error_report::error_report()
|
error_report::error_report()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
error_frame::error_frame(const fc::error_frame& e)
|
error_frame::error_frame(const fc::error_frame& e)
|
||||||
:desc(e.desc),file(e.file),line(e.line),method(e.method),time(e.time),meta(e.meta){}
|
:desc(e.desc),file(e.file),line(e.line),method(e.method),meta(e.meta),time(e.time),detail(e.detail){}
|
||||||
|
|
||||||
error_frame::error_frame(fc::error_frame&& e)
|
error_frame::error_frame(fc::error_frame&& e)
|
||||||
:desc(fc::move(e.desc)),
|
:desc(fc::move(e.desc)),
|
||||||
file(fc::move(e.file)),
|
file(fc::move(e.file)),
|
||||||
line(e.line),
|
line(e.line),
|
||||||
method(fc::move(e.method)),
|
method(fc::move(e.method)),
|
||||||
|
meta(fc::move(e.meta)),
|
||||||
time(e.time),
|
time(e.time),
|
||||||
meta(fc::move(e.meta))
|
detail(e.detail)
|
||||||
{}
|
{}
|
||||||
|
|
||||||
fc::error_frame& fc::error_frame::operator=(const fc::error_frame& f ) {
|
fc::error_frame& fc::error_frame::operator=(const fc::error_frame& f ) {
|
||||||
|
|
@ -38,6 +41,7 @@ fc::error_frame& fc::error_frame::operator=(fc::error_frame&& e )
|
||||||
method=fc::move(e.method);
|
method=fc::move(e.method);
|
||||||
time=e.time;
|
time=e.time;
|
||||||
meta=fc::move(e.meta);
|
meta=fc::move(e.meta);
|
||||||
|
detail = e.detail;
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -158,7 +158,7 @@ namespace fc {
|
||||||
}
|
}
|
||||||
bool remove( const path& f ) {
|
bool remove( const path& f ) {
|
||||||
try {
|
try {
|
||||||
boost::filesystem::remove( f );
|
return boost::filesystem::remove( f );
|
||||||
} catch ( ... ) {
|
} catch ( ... ) {
|
||||||
FC_THROW_REPORT( "Unable to remove '${path}'", fc::value().set( "path", f ).set("exception", fc::except_str() ) );
|
FC_THROW_REPORT( "Unable to remove '${path}'", fc::value().set( "path", f ).set("exception", fc::except_str() ) );
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue