diff --git a/src/main/java/de/tudresden/inf/st/pnml/PnmlParser.java b/src/main/java/de/tudresden/inf/st/pnml/PnmlParser.java
index 3c090c0498949db7b6166a9414e7b9dbcbc5a6df..1345498efa6091cbe6f8e065e4c97ab1c227566c 100644
--- a/src/main/java/de/tudresden/inf/st/pnml/PnmlParser.java
+++ b/src/main/java/de/tudresden/inf/st/pnml/PnmlParser.java
@@ -37,22 +37,18 @@ public class PnmlParser {
    * @param fileName the file name of a *.pnml file
    * @return a list of Petri nets
    */
-  public static List<PetriNet> parsePnml(String fileName) {
+  public static List<PetriNet> parsePnml(String fileName) throws PnmlParseException {
     Path file = Paths.get(fileName);
 
     HLAPIRootClass document = null;
 
     try {
       document = PNMLUtils.importPnmlDocument(file.toFile(), false);
-
-      logger.info(document.toPNML());
+      logger.debug(document.toPNML());
     } catch (ImportException | InvalidIDException e) {
-      logger.error("Unable to import PNML document from file '{}'", fileName);
-      logger.error("Exception was thrown!", e);
-      System.exit(-1);
+      throw new PnmlParseException("Unable to import PNML document from file '" + fileName + "'", e);
     }
 
-
     logger.info("Imported document workspace ID: {}", ModelRepository.getInstance().getCurrentDocWSId());
 
     List<PetriNet> petriNets = new ArrayList<>();
@@ -60,18 +56,12 @@ public class PnmlParser {
     fr.lip6.move.pnml.framework.general.PNType type = PNMLUtils.determinePNType(document);
     switch (type) {
       case PTNET:
-        PetriNetDocHLAPI ptDoc =
-            (PetriNetDocHLAPI) document;
-
+        PetriNetDocHLAPI ptDoc = (PetriNetDocHLAPI) document;
 
         for (fr.lip6.move.pnml.ptnet.PetriNet pmnlNet : ptDoc.getNets()) {
           PnmlParser parser;
-          try {
-            parser = new PnmlParser(pmnlNet);
-            petriNets.add(parser.getPetriNet());
-          } catch (PnmlParseException e) {
-            logger.error("Parsing the Petri net using the PNML framework failed.", e);
-          }
+          parser = new PnmlParser(pmnlNet);
+          petriNets.add(parser.getPetriNet());
         }
 
         break;
@@ -80,7 +70,7 @@ public class PnmlParser {
       case HLPN:
       case PTHLPN:
       default:
-        logger.error("Petri net is of unsupported type {}.", type.getLiteral());
+        throw new PnmlParseException("Petri net is of unsupported type " + type.getLiteral() + ".");
     }
     return petriNets;
   }
diff --git a/src/test/java/de/tudresden/inf/st/pnml/PnmlTest.java b/src/test/java/de/tudresden/inf/st/pnml/PnmlTest.java
index d94e599176387d0b9f4b28eae6887e74e6ec77f8..4c058a0ef11b2ee3de556819fa852f4e26852302 100644
--- a/src/test/java/de/tudresden/inf/st/pnml/PnmlTest.java
+++ b/src/test/java/de/tudresden/inf/st/pnml/PnmlTest.java
@@ -2,6 +2,7 @@ package de.tudresden.inf.st.pnml;
 
 import de.tudresden.inf.st.pnml.jastadd.model.PNType;
 import de.tudresden.inf.st.pnml.jastadd.model.PetriNet;
+import de.tudresden.inf.st.pnml.jastadd.model.PnmlParseException;
 import org.junit.jupiter.params.ParameterizedTest;
 import org.junit.jupiter.params.provider.ValueSource;
 import org.slf4j.Logger;
@@ -17,7 +18,7 @@ class PnmlTest {
 
   @ParameterizedTest
   @ValueSource(strings = {"src/test/resources/minimal.pnml", "src/test/resources/philo.pnml", "src/test/resources/haddadin_automaton_flat.pnml"})
-  void parsePnml(String fileName) {
+  void parsePnml(String fileName) throws PnmlParseException {
     List<PetriNet> result = PnmlParser.parsePnml(fileName);
     assertThat(result).asList()
         .isNotEmpty()