私はyaml-cppを持っています。常にstd::string
に変換されます。たとえば、実際に文字列が"3.14"
であれば、double
にも変換されます。最初にint
、次にdouble
、次にbool
を試してみたい場合は、std::string
に変換してください。さてさて、そうしましょう巣それらtry
からcatch
ES:ネストされたtry-catchを掛ける
try {
const int a = node.as<int>();
std::cout << "int!" << a << std::endl;
} catch (YAML::BadConversion) {
try {
const double a = node.as<double>();
std::cout << "double!" << a << std::endl;
} catch (YAML::BadConversion) {
try {
const bool a = node.as<bool>();
std::cout << "bool!" << a << std::endl;
} catch (YAML::BadConversion) {
const std::string a = node.as<std::string>();
std::cout << "string!" << a << std::endl;
}
}
}
フム、深く深くネストが、これはそのコードを記述するための最良の方法ではないことを私に伝えます。
ここでデザインを改善する方法についてのご意見はありますか?フラットネストは確かに推奨されるでしょう。
は、単一のtry-catch内
すべてなど、ブール値を試行し、文字列にに変換し、例外を無視:
わからないが、ただ一つのtry {}とキャッチ(...)をさらに簡素化することができ
? ExceptionStatement(Exception e)のように、Exceptionを関数でチェックします。 –