1
0
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:
Sadie Powell
2024-03-11 13:53:05 +00:00
parent e2df7d4d01
commit 29e7674e56
76 changed files with 572 additions and 810 deletions
+5 -6
View File
@@ -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)