Catch ContainerFormatError when deserialising containers

Only the deserialize() functions themselves may pass the ContainerFormatError on, because their callers will have to handle those errors anyway.

Contributes to issue CURA-5045.
This commit is contained in:
Ghostkeeper 2018-04-06 13:26:16 +02:00
parent c9dc429b2b
commit 572721e20d
No known key found for this signature in database
GPG key ID: 5252B696FB5E7C7A
6 changed files with 48 additions and 23 deletions

View file

@ -1,9 +1,10 @@
# Copyright (c) 2016 Ultimaker B.V.
# Copyright (c) 2018 Ultimaker B.V.
# Cura is released under the terms of the LGPLv3 or higher.
import configparser
from UM.PluginRegistry import PluginRegistry
from UM.Logger import Logger
from UM.Settings.ContainerFormatError import ContainerFormatError
from UM.Settings.InstanceContainer import InstanceContainer # The new profile to make.
from cura.ProfileReader import ProfileReader
@ -77,7 +78,10 @@ class CuraProfileReader(ProfileReader):
profile.addMetaDataEntry("type", "quality_changes")
try:
profile.deserialize(serialized)
except Exception as e: # Parsing error. This is not a (valid) Cura profile then.
except ContainerFormatError as e:
Logger.log("e", "Error in the format of a container: %s", str(e))
return None
except Exception as e:
Logger.log("e", "Error while trying to parse profile: %s", str(e))
return None
return profile