diff --git a/dsmr_parser/parsers.py b/dsmr_parser/parsers.py
index 7eb6d9c..daf502b 100644
--- a/dsmr_parser/parsers.py
+++ b/dsmr_parser/parsers.py
@@ -33,7 +33,7 @@ class TelegramParser(object):
             for signature in self.telegram_specification['objects'].keys()
         }
 
-    def parse(self, telegram_data, encryption_key="", authentication_key=""):  # noqa: C901
+    def parse(self, telegram_data, encryption_key="", authentication_key="", throw_ex=False):  # noqa: C901
         """
         Parse telegram from string to dict.
         The telegram str type makes python 2.x integration easier.
@@ -93,9 +93,14 @@ class TelegramParser(object):
             for match in matches:
                 try:
                     dsmr_object = parser.parse(match)
-                except Exception:
+                except ParseError:
                     logger.error("ignore line with signature {}, because parsing failed.".format(signature),
                                  exc_info=True)
+                    if throw_ex:
+                        raise
+                except Exception as err:
+                    logger.error("Unexpected {}: {}".format(type(err), err))
+                    raise
                 else:
                     telegram.add(obis_reference=signature, dsmr_object=dsmr_object)
 
diff --git a/test/test_parse_fluvius.py b/test/test_parse_fluvius.py
index a43e5b1..968b9ca 100644
--- a/test/test_parse_fluvius.py
+++ b/test/test_parse_fluvius.py
@@ -18,7 +18,10 @@ class TelegramParserFluviusTest(unittest.TestCase):
 
     def test_parse(self):
         parser = TelegramParser(telegram_specifications.BELGIUM_FLUVIUS)
-        result = parser.parse(TELEGRAM_FLUVIUS_V171)
+        try:
+            result = parser.parse(TELEGRAM_FLUVIUS_V171, throw_ex=True)
+        except Exception as ex:
+            assert False, f"parse trigged an exception {ex}"
 
         # BELGIUM_VERSION_INFORMATION (0-0:96.1.4)
         assert isinstance(result[obis.BELGIUM_VERSION_INFORMATION], CosemObject)
diff --git a/test/test_parse_iskra_ie.py b/test/test_parse_iskra_ie.py
index 642fc0d..adba995 100644
--- a/test/test_parse_iskra_ie.py
+++ b/test/test_parse_iskra_ie.py
@@ -15,7 +15,10 @@ class TelegramParserIskraIETest(unittest.TestCase):
 
     def test_parse(self):
         parser = TelegramParser(telegram_specifications.ISKRA_IE)
-        result = parser.parse(TELEGRAM_ISKRA_IE)
+        try:
+            result = parser.parse(TELEGRAM_ISKRA_IE, throw_ex=True)
+        except Exception as ex:
+            assert False, f"parse trigged an exception {ex}"
 
         # EQUIPMENT_IDENTIFIER_GAS (0-0:96.1.0)
         assert isinstance(result[obis.EQUIPMENT_IDENTIFIER_GAS], CosemObject)
diff --git a/test/test_parse_v2_2.py b/test/test_parse_v2_2.py
index e7203ab..358f84e 100644
--- a/test/test_parse_v2_2.py
+++ b/test/test_parse_v2_2.py
@@ -14,7 +14,10 @@ class TelegramParserV2_2Test(unittest.TestCase):
 
     def test_parse(self):
         parser = TelegramParser(telegram_specifications.V2_2)
-        result = parser.parse(TELEGRAM_V2_2)
+        try:
+            result = parser.parse(TELEGRAM_V2_2, throw_ex=True)
+        except Exception as ex:
+            assert False, f"parse trigged an exception {ex}"
 
         # ELECTRICITY_USED_TARIFF_1 (1-0:1.8.1)
         assert isinstance(result[obis.ELECTRICITY_USED_TARIFF_1], CosemObject)
diff --git a/test/test_parse_v3.py b/test/test_parse_v3.py
index c50a86e..ef41d04 100644
--- a/test/test_parse_v3.py
+++ b/test/test_parse_v3.py
@@ -14,7 +14,10 @@ class TelegramParserV3Test(unittest.TestCase):
 
     def test_parse(self):
         parser = TelegramParser(telegram_specifications.V3)
-        result = parser.parse(TELEGRAM_V3)
+        try:
+            result = parser.parse(TELEGRAM_V3, throw_ex=True)
+        except Exception as ex:
+            assert False, f"parse trigged an exception {ex}"
 
         # ELECTRICITY_USED_TARIFF_1 (1-0:1.8.1)
         assert isinstance(result[obis.ELECTRICITY_USED_TARIFF_1], CosemObject)
diff --git a/test/test_parse_v4_2.py b/test/test_parse_v4_2.py
index cab34f7..35d8064 100644
--- a/test/test_parse_v4_2.py
+++ b/test/test_parse_v4_2.py
@@ -17,7 +17,10 @@ class TelegramParserV4_2Test(unittest.TestCase):
 
     def test_parse(self):
         parser = TelegramParser(telegram_specifications.V4)
-        result = parser.parse(TELEGRAM_V4_2)
+        try:
+            result = parser.parse(TELEGRAM_V4_2, throw_ex=True)
+        except Exception as ex:
+            assert False, f"parse trigged an exception {ex}"
 
         # P1_MESSAGE_HEADER (1-3:0.2.8)
         assert isinstance(result[obis.P1_MESSAGE_HEADER], CosemObject)
diff --git a/test/test_parse_v5.py b/test/test_parse_v5.py
index 5b47bf2..f977e00 100644
--- a/test/test_parse_v5.py
+++ b/test/test_parse_v5.py
@@ -17,7 +17,10 @@ class TelegramParserV5Test(unittest.TestCase):
 
     def test_parse(self):
         parser = TelegramParser(telegram_specifications.V5)
-        telegram = parser.parse(TELEGRAM_V5)
+        try:
+            telegram = parser.parse(TELEGRAM_V5, throw_ex=True)
+        except Exception as ex:
+            assert False, f"parse trigged an exception {ex}"
 
         # P1_MESSAGE_HEADER (1-3:0.2.8)
         assert isinstance(telegram.P1_MESSAGE_HEADER, CosemObject)