Added additional exception handling for serialization and deserialization failures for scripts to prevent data loss
This commit is contained in:
parent
6efbea54e1
commit
042bff5c1a
|
@ -44,6 +44,8 @@ namespace SHADE
|
|||
// Get all fields
|
||||
System::Collections::Generic::IEnumerable<FieldInfo^>^ fields = ReflectionUtilities::GetInstanceFields(object);
|
||||
for each (FieldInfo^ field in fields)
|
||||
{
|
||||
try
|
||||
{
|
||||
// Ignore private and non-SerialiseField
|
||||
if (!ReflectionUtilities::FieldIsSerialisable(field))
|
||||
|
@ -52,6 +54,14 @@ namespace SHADE
|
|||
// Serialise
|
||||
writeFieldIntoYaml(field, object, scriptNode);
|
||||
}
|
||||
catch (System::Exception^ e)
|
||||
{
|
||||
Debug::LogError
|
||||
(
|
||||
System::String::Format("[SerialisationUtilities] Failed to serialise field ({0}): {1}", field->Name, e->ToString())
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
scriptListNode.push_back(scriptNode);
|
||||
}
|
||||
|
@ -73,6 +83,8 @@ namespace SHADE
|
|||
// Get all fields
|
||||
System::Collections::Generic::IEnumerable<FieldInfo^>^ fields = ReflectionUtilities::GetInstanceFields(object);
|
||||
for each (FieldInfo^ field in fields)
|
||||
{
|
||||
try
|
||||
{
|
||||
// Ignore private and non-SerialiseField
|
||||
if (!ReflectionUtilities::FieldIsSerialisable(field))
|
||||
|
@ -85,6 +97,14 @@ namespace SHADE
|
|||
writeYamlIntoField(field, object, yamlNode[FIELD_NAME]);
|
||||
}
|
||||
}
|
||||
catch (System::Exception^ e)
|
||||
{
|
||||
Debug::LogError
|
||||
(
|
||||
System::String::Format("[SerialisationUtilities] Failed to deserialise field ({0}): {1}", field->Name, e->ToString())
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
/*---------------------------------------------------------------------------------*/
|
||||
/* Serialization Helper Functions */
|
||||
|
|
Loading…
Reference in New Issue