From a8fa327f09b0832708cb4d6975057654be469348 Mon Sep 17 00:00:00 2001 From: HERITAGE-XION Date: Sat, 10 Jan 2026 15:03:34 +0100 Subject: [PATCH] added comprehensive error handling that provides meaningful context and graceful degradation --- src/services/powerpoint_handler.py | 9 ++++++++- src/services/worddoc_handler.py | 14 ++++++++++++-- 2 files changed, 20 insertions(+), 3 deletions(-) diff --git a/src/services/powerpoint_handler.py b/src/services/powerpoint_handler.py index 1cdd2da6..99867b79 100644 --- a/src/services/powerpoint_handler.py +++ b/src/services/powerpoint_handler.py @@ -18,6 +18,8 @@ from pptx import Presentation from src.services.metadata_handler import MetadataHandler from src.utils.exceptions import ( MetadataNotFoundError, + MetadataProcessingError, + MetadataReadingError, UnsupportedFormatError, ) @@ -117,6 +119,8 @@ class PowerpointHandler(MetadataHandler): self.keys_to_delete.append(attr) return self.metadata + except Exception as e: + raise MetadataReadingError(f"error reading metadata. {e}") finally: del prs @@ -139,7 +143,8 @@ class PowerpointHandler(MetadataHandler): # Clear each property marked for deletion for attr in self.keys_to_delete: self.processed_metadata[attr] = None - + except Exception as e: + raise MetadataProcessingError(f"error processing metadata. {e}") finally: del prs @@ -170,5 +175,7 @@ class PowerpointHandler(MetadataHandler): setattr(prs.core_properties, attr, self.processed_metadata[attr]) prs.save(str(destination_file_path)) + except Exception as e: + raise MetadataProcessingError(f"error processing metadata. {e}") finally: del prs diff --git a/src/services/worddoc_handler.py b/src/services/worddoc_handler.py index 3d6b6cf4..e08a31cb 100644 --- a/src/services/worddoc_handler.py +++ b/src/services/worddoc_handler.py @@ -16,7 +16,12 @@ from typing import Any from docx import Document # type: ignore[import-untyped] from src.services.metadata_handler import MetadataHandler -from src.utils.exceptions import MetadataNotFoundError, UnsupportedFormatError +from src.utils.exceptions import ( + MetadataNotFoundError, + MetadataProcessingError, + MetadataReadingError, + UnsupportedFormatError, +) # Supported Word document formats FORMAT_MAP = { @@ -111,6 +116,8 @@ class WorddocHandler(MetadataHandler): self.keys_to_delete.append(attr) return self.metadata + except Exception as e: + raise MetadataReadingError(f"error reading metadata. {e}") finally: del doc @@ -133,7 +140,8 @@ class WorddocHandler(MetadataHandler): # Clear each property marked for deletion for attr in self.keys_to_delete: self.processed_metadata[attr] = None - + except Exception as e: + raise MetadataProcessingError(f"error processing metadata. {e}") finally: del doc @@ -164,5 +172,7 @@ class WorddocHandler(MetadataHandler): setattr(doc.core_properties, attr, self.processed_metadata[attr]) doc.save(str(destination_file_path)) + except Exception as e: + raise MetadataProcessingError(f"error processing metadata. {e}") finally: del doc