mirror of
https://github.com/anope/anope.git
synced 2026-07-01 10:46:38 +02:00
Replace convertTo/stringify with non-throwing alternatives.
Having these throw is terrible for ergonomics and there are loads of places where the exception was either silently ignored or not handled at all. Having a function which returns an optional and another that returns a default works a lot better imo.
This commit is contained in:
+5
-6
@@ -195,7 +195,7 @@ void ChannelInfo::Serialize(Serialize::Data &data) const
|
||||
{
|
||||
Anope::string levels_buffer;
|
||||
for (const auto &[name, level] : this->levels)
|
||||
levels_buffer += name + " " + stringify(level) + " ";
|
||||
levels_buffer += name + " " + Anope::ToString(level) + " ";
|
||||
data["levels"] << levels_buffer;
|
||||
}
|
||||
if (this->bi)
|
||||
@@ -238,11 +238,10 @@ Serializable *ChannelInfo::Unserialize(Serializable *obj, Serialize::Data &data)
|
||||
std::vector<Anope::string> v;
|
||||
spacesepstream(slevels).GetTokens(v);
|
||||
for (unsigned i = 0; i + 1 < v.size(); i += 2)
|
||||
try
|
||||
{
|
||||
ci->levels[v[i]] = convertTo<int16_t>(v[i + 1]);
|
||||
}
|
||||
catch (const ConvertException &) { }
|
||||
{
|
||||
if (auto level = Anope::TryConvert<int16_t>(v[i + 1]))
|
||||
ci->levels[v[i]] = level.value();
|
||||
}
|
||||
}
|
||||
BotInfo *bi = BotInfo::Find(sbi, true);
|
||||
if (*ci->bi != bi)
|
||||
|
||||
Reference in New Issue
Block a user