diff --git a/cura/Settings/CuraContainerRegistry.py b/cura/Settings/CuraContainerRegistry.py index bbd45cdb96..b0ab99ee35 100644 --- a/cura/Settings/CuraContainerRegistry.py +++ b/cura/Settings/CuraContainerRegistry.py @@ -708,6 +708,7 @@ class CuraContainerRegistry(ContainerRegistry): try: instance_container.deserialize(serialized, file_path) except ContainerFormatError: + Logger.logException("e", "Unable to deserialize InstanceContainer %s", file_path) continue self.addContainer(instance_container) break diff --git a/plugins/3MFReader/ThreeMFWorkspaceReader.py b/plugins/3MFReader/ThreeMFWorkspaceReader.py index 7e86cec6a9..d037d8324c 100755 --- a/plugins/3MFReader/ThreeMFWorkspaceReader.py +++ b/plugins/3MFReader/ThreeMFWorkspaceReader.py @@ -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)