[Strings] Add exception handling to converters themselves (#3029)

This commit is contained in:
Chris Miles 2023-03-04 19:39:55 -06:00 committed by GitHub
parent 034feb4ff4
commit a0a28fef04
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -781,27 +781,72 @@ std::string Strings::Random(size_t length)
// fails to cast to a number
int Strings::ToInt(const std::string &s, int fallback)
{
return Strings::IsNumber(s) ? std::stoi(s) : fallback;
if (!Strings::IsNumber(s)) {
return fallback;
}
try {
return std::stoi(s);
}
catch (std::exception &) {
return fallback;
}
}
int64 Strings::ToBigInt(const std::string &s, int64 fallback)
{
return Strings::IsNumber(s) ? std::stoll(s) : fallback;
if (!Strings::IsNumber(s)) {
return fallback;
}
try {
return std::stoll(s);
}
catch (std::exception &) {
return fallback;
}
}
uint32 Strings::ToUnsignedInt(const std::string &s, uint32 fallback)
{
return Strings::IsNumber(s) ? std::stoul(s) : fallback;
if (!Strings::IsNumber(s)) {
return fallback;
}
try {
return std::stoul(s);
}
catch (std::exception &) {
return fallback;
}
}
uint64 Strings::ToUnsignedBigInt(const std::string &s, uint64 fallback)
{
return Strings::IsNumber(s) ? std::stoull(s) : fallback;
if (!Strings::IsNumber(s)) {
return fallback;
}
try {
return std::stoull(s);
}
catch (std::exception &) {
return fallback;
}
}
float Strings::ToFloat(const std::string &s, float fallback)
{
return Strings::IsFloat(s) ? std::stof(s) : fallback;
if (!Strings::IsFloat(s)) {
return fallback;
}
try {
return std::stof(s);
}
catch (std::exception &) {
return fallback;
}
}
std::string Strings::RemoveNumbers(std::string s)