mirror of
https://github.com/Ultimaker/Cura.git
synced 2025-07-06 22:47:29 -06:00
More clear error handling for container deserialization
CURA-5045 - If a container cannot be deserialized in project loading, it should fail right on the spot because even if it continues, it still won't work. - In other places, at least log deserialization errors if any of them show up.
This commit is contained in:
parent
572721e20d
commit
4615c756a7
2 changed files with 12 additions and 4 deletions
|
@ -12,7 +12,6 @@ import xml.etree.ElementTree as ET
|
|||
from UM.Workspace.WorkspaceReader import WorkspaceReader
|
||||
from UM.Application import Application
|
||||
|
||||
from UM.ConfigurationErrorMessage import ConfigurationErrorMessage
|
||||
from UM.Logger import Logger
|
||||
from UM.i18n import i18nCatalog
|
||||
from UM.Signal import postponeSignals, CompressTechnique
|
||||
|
@ -337,7 +336,9 @@ class ThreeMFWorkspaceReader(WorkspaceReader):
|
|||
try:
|
||||
instance_container.deserialize(serialized, file_name = instance_container_file_name)
|
||||
except ContainerFormatError:
|
||||
continue
|
||||
Logger.logException("e", "Failed to deserialize InstanceContainer %s from project file %s",
|
||||
instance_container_file_name, file_name)
|
||||
return ThreeMFWorkspaceReader.PreReadResult.failed
|
||||
if quality_changes[0] != instance_container:
|
||||
quality_changes_conflict = True
|
||||
elif container_type == "quality":
|
||||
|
@ -648,7 +649,11 @@ class ThreeMFWorkspaceReader(WorkspaceReader):
|
|||
definition_container.deserialize(archive.open(definition_container_file).read().decode("utf-8"),
|
||||
file_name = definition_container_file)
|
||||
except ContainerFormatError:
|
||||
continue #Skip this definition container file. Pretend there is none.
|
||||
# We cannot just skip the definition file because everything else later will just break if the
|
||||
# machine definition cannot be found.
|
||||
Logger.logException("e", "Failed to deserialize definition file %s in project file %s",
|
||||
definition_container_file, file_name)
|
||||
raise
|
||||
self._container_registry.addContainer(definition_container)
|
||||
Job.yieldThread()
|
||||
|
||||
|
@ -691,7 +696,9 @@ class ThreeMFWorkspaceReader(WorkspaceReader):
|
|||
material_container.deserialize(archive.open(material_container_file).read().decode("utf-8"),
|
||||
file_name = container_id + "." + self._material_container_suffix)
|
||||
except ContainerFormatError:
|
||||
continue #Pretend that this material didn't exist.
|
||||
Logger.logException("e", "Failed to deserialize material file %s in project file %s",
|
||||
material_container_file, file_name)
|
||||
raise
|
||||
if need_new_name:
|
||||
new_name = ContainerRegistry.getInstance().uniqueName(material_container.getName())
|
||||
material_container.setName(new_name)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue