errorinfo constructor test

This commit is contained in:
Ben Burdette 2020-04-29 18:57:05 -06:00
parent 2d0f766a77
commit 39ff80d031
4 changed files with 16 additions and 5 deletions

View file

@ -23,6 +23,16 @@ int main()
logger->logEI(e.info());
}
// ErrorInfo constructor
try {
auto e = Error("generic error");
throw DemoError(e.info());
} catch (Error &e) {
logger->logEI(e.info());
}
// For completeness sake, info through vomit levels.
// But this is maybe a heavy format for those.
logger->logEI(

View file

@ -284,7 +284,7 @@ void BinaryCacheStore::narFromPath(const StorePath & storePath, Sink & sink)
try {
getFile(info->url, *decompressor);
} catch (NoSuchBinaryCacheFile & e) {
throw SubstituteGone(e.what());
throw SubstituteGone(e.info());
}
decompressor->finish();

View file

@ -365,7 +365,7 @@ void RemoteStore::queryPathInfoUncached(const StorePath & path,
} catch (Error & e) {
// Ugly backwards compatibility hack.
if (e.msg().find("is not valid") != std::string::npos)
throw InvalidPath(e.what());
throw InvalidPath(e.info());
throw;
}
if (GET_PROTOCOL_MINOR(conn->daemonVersion) >= 17) {

View file

@ -83,6 +83,7 @@ class BaseError : public std::exception
protected:
string prefix_; // used for location traces etc.
ErrorInfo err;
std::optional<string> what_;
const string& calcWhat()
{
@ -107,18 +108,18 @@ public:
.hint = hintfmt(args...)
}
, status(status)
{ }
{ }
template<typename... Args>
BaseError(const Args & ... args)
: err { .level = lvlError,
.hint = hintfmt(args...)
}
{ }
{ }
BaseError(ErrorInfo e)
: err(e)
{ }
{ }
virtual const char* sname() const { return "BaseError"; }