Merge pull request #779 from armintaenzertng/issue-775-catch-json-decode-error

[issue-775] catch decoding errors while parsing using the cli tool

GitOrigin-RevId: 552940abb52cbc9cf358e429d1388e9c1b25d7a6
Change-Id: If6b1073c3b885fa7928f932ee029e57db750590b
diff --git a/src/spdx_tools/spdx/clitools/pyspdxtools.py b/src/spdx_tools/spdx/clitools/pyspdxtools.py
index 6a46b0d..4219c6b 100644
--- a/src/spdx_tools/spdx/clitools/pyspdxtools.py
+++ b/src/spdx_tools/spdx/clitools/pyspdxtools.py
@@ -14,9 +14,13 @@
 # limitations under the License.
 import logging
 import sys
+from json import JSONDecodeError
+from xml.parsers.expat import ExpatError
+from xml.sax import SAXParseException
 
 import click
 from beartype.typing import List
+from yaml.scanner import ScannerError
 
 from spdx_tools.spdx.graph_generation import export_graph_from_document
 from spdx_tools.spdx.model import Document
@@ -113,6 +117,22 @@
         logging.error(log_string)
         sys.exit(1)
 
+    except JSONDecodeError as err:
+        logging.error(f"Invalid JSON provided: {err.args[0]}")
+        sys.exit(1)
+
+    except ScannerError as err:
+        logging.error("Invalid YAML provided: " + "\n".join([str(arg) for arg in err.args]))
+        sys.exit(1)
+
+    except ExpatError as err:
+        logging.error(f"Invalid XML provided: {err.args[0]}")
+        sys.exit(1)
+
+    except SAXParseException as err:
+        logging.error(f"Invalid RDF-XML provided: {str(err)}")
+        sys.exit(1)
+
     except FileNotFoundError as err:
         logging.error(f"{err.strerror}: {err.filename}")
         sys.exit(1)