diff --git a/src/main/java/org/apache/sling/pipes/Pipe.java b/src/main/java/org/apache/sling/pipes/Pipe.java
index d0830c7..f93a5fa 100644
--- a/src/main/java/org/apache/sling/pipes/Pipe.java
+++ b/src/main/java/org/apache/sling/pipes/Pipe.java
@@ -115,13 +115,11 @@
 
     /**
      * to be executed before output is retrieved
-     * @throws Exception in case anything goes wrong
      */
     void before();
 
     /**
      * to be executed before output is retrieved
-     * @throws Exception in case anything goes wrong
      */
     void after();
 
diff --git a/src/main/java/org/apache/sling/pipes/PipeBuilder.java b/src/main/java/org/apache/sling/pipes/PipeBuilder.java
index 7d54752..254bcb3 100644
--- a/src/main/java/org/apache/sling/pipes/PipeBuilder.java
+++ b/src/main/java/org/apache/sling/pipes/PipeBuilder.java
@@ -358,7 +358,6 @@
     /**
      * builds and run configured pipe
      * @return set of resource path, output of the pipe execution
-     * @throws Exception exceptions thrown by the build or the pipe execution itself
      */
     ExecutionResult run();
 
@@ -366,7 +365,6 @@
      * allow execution of a pipe, with more parameter
      * @param bindings additional bindings
      * @return set of resource path, output of the pipe execution
-     * @throws Exception in case something goes wrong with pipe execution
      */
     ExecutionResult run(Map<String, Object> bindings);
 
@@ -374,7 +372,6 @@
      * allow execution of a pipe, with more parameter
      * @param bindings additional bindings, should be key/value format
      * @return set of resource path, output of the pipe execution
-     * @throws Exception in case something goes wrong with pipe execution
      */
     ExecutionResult runWith(Object... bindings);
 
@@ -391,7 +388,6 @@
      * @param numThreads number of threads to use for running the contained pipes
      * @param bindings additional bindings for the execution (can be null)
      * @return set of resource path, merged output of pipes execution (order is arbitrary)
-     * @throws Exception in case something went wrong in run execution
      */
     ExecutionResult runParallel(int numThreads, Map<String, Object> bindings);
 }
diff --git a/src/main/java/org/apache/sling/pipes/internal/GogoCommands.java b/src/main/java/org/apache/sling/pipes/internal/GogoCommands.java
index d137edf..fb64e6d 100644
--- a/src/main/java/org/apache/sling/pipes/internal/GogoCommands.java
+++ b/src/main/java/org/apache/sling/pipes/internal/GogoCommands.java
@@ -67,7 +67,9 @@
     /**
      * run command handler
      * @param cmds string tokens coming with run command
-     * @throws Exception in case anything went wrong
+     * @throws LoginException in case configured service user is invalid,
+     * @throws InvocationTargetException in case commands are misconfigured,
+     * @throws IllegalAccessException in case this user can't access the pipe executions
      */
     public void run(String... cmds) throws LoginException, InvocationTargetException, IllegalAccessException {
         try (ResourceResolver resolver = factory.getServiceResourceResolver(plumber.getServiceUser())) {
@@ -79,7 +81,10 @@
     /**
      * build command handler
      * @param cmds string tokens coming with build command
-     * @throws Exception in case anything went wrong
+     * @throws LoginException in case configured service user is invalid,
+     * @throws InvocationTargetException in case commands are misconfigured,
+     * @throws IllegalAccessException in case this user can't access the pipe executions
+     * @throws PersistenceException in case persistence of the pipe failed
      */
     public void build(String... cmds) throws LoginException, InvocationTargetException, IllegalAccessException, PersistenceException {
         try (ResourceResolver resolver = factory.getServiceResourceResolver(plumber.getServiceUser())) {
@@ -92,7 +97,8 @@
      * execute command handler
      * @param path pipe path, {@code INPUT} for getting last token's output as path for things like build some / pipe | execute -
      * @param options string tokens coming with run command
-     * @throws Exception in case anything went wrong
+     * @throws IOException if writing to the output fails,
+     * @throws LoginException in case configured service user is invalid,
      */
     public void execute(String path, String... options) throws IOException, LoginException {
         String computedPath = INPUT.equals(path) ? IOUtils.toString(System.in).trim() : path;
