@@ -1516,12 +1516,10 @@ Local<Value> NbtCompoundClass::getTypeOf(const Arguments& args) {
15161516 CHECK_ARG_TYPE (args[0 ], ValueKind::kString );
15171517
15181518 try {
1519- auto & list = getPtr ()->mTags ;
1520- auto key = args[0 ].asString ().toString ();
1521-
1522- return Number::newNumber (int (list.at (key).getId ()));
1523- } catch (const std::out_of_range&) {
1524- return Local<Value>();
1519+ auto key = args[0 ].asString ().toString ();
1520+ if (auto * tag = getPtr (); tag && tag->contains (key)) {
1521+ return Number::newNumber (int (tag->at (key).getId ()));
1522+ }
15251523 }
15261524 CATCH (" Fail in NBT GetTypeOf!" );
15271525}
@@ -1723,9 +1721,9 @@ Local<Value> NbtCompoundClass::getData(const Arguments& args) {
17231721
17241722 try {
17251723 auto key = args[0 ].asString ().toString ();
1726-
1727- return Tag2Value (getPtr () ->at (key).get ().as_ptr <Tag>());
1728- } catch ( const std::out_of_range&) {
1724+ if ( auto * tag = getPtr (); tag && tag-> contains (key)) {
1725+ return Tag2Value (tag ->at (key).get ().as_ptr <Tag>());
1726+ }
17291727 return Local<Value>();
17301728 }
17311729 CATCH (" Fail in NBT GetData!" )
@@ -1738,6 +1736,10 @@ Local<Value> NbtCompoundClass::getTag(const Arguments& args) {
17381736 try {
17391737 auto key = args[0 ].asString ().toString ();
17401738
1739+ if (auto * tag = getPtr (); !tag || !tag->contains (key)) {
1740+ return Local<Value>();
1741+ }
1742+
17411743 Local<Value> res;
17421744 // lse::LegacyScriptEngine::getLogger().info(
17431745 // "getCompoundTag Type {}",
@@ -1781,8 +1783,6 @@ Local<Value> NbtCompoundClass::getTag(const Arguments& args) {
17811783 break ;
17821784 }
17831785 return res;
1784- } catch (const std::out_of_range&) {
1785- return Local<Value>();
17861786 }
17871787 CATCH (" Fail in NBT GetTag!" );
17881788}
0 commit comments