diff --git a/java-scpclient/src/main/java/cz/it4i/fiji/scpclient/SshCommandClient.java b/java-scpclient/src/main/java/cz/it4i/fiji/scpclient/SshCommandClient.java
index 78c54aee6951bc7ed666003d1033988e68cf4963..b4a097ef177fff3d668f87cfceffc33d952fafad 100644
--- a/java-scpclient/src/main/java/cz/it4i/fiji/scpclient/SshCommandClient.java
+++ b/java-scpclient/src/main/java/cz/it4i/fiji/scpclient/SshCommandClient.java
@@ -49,11 +49,17 @@ public class SshCommandClient extends AbstractBaseSshClient {
 			channelExec.connect();
 
 			BufferedReader reader = new BufferedReader(new InputStreamReader(in));
+			BufferedReader errReader = new BufferedReader(new InputStreamReader(
+				channelExec.getErrStream()));
 			String line;
 
 			while ((line = reader.readLine()) != null) {
 				result.add(line);
 			}
+			List<String> errors = new LinkedList<>();
+			while ((line = errReader.readLine()) != null) {
+				errors.add(line);
+			}
 
 			int exitStatus = channelExec.getExitStatus();
 			channelExec.disconnect();
@@ -62,7 +68,8 @@ public class SshCommandClient extends AbstractBaseSshClient {
 				log.debug("Done, but exit status not set!");
 			}
 			else if (exitStatus > 0) {
-				log.debug("Done, but with error!");
+				log.debug("Done, but with error! ");
+				throw new SshExecuteCommandException(exitStatus, result, errors);
 			}
 			else {
 				log.debug("Done!");
diff --git a/java-scpclient/src/main/java/cz/it4i/fiji/scpclient/SshExecuteCommandException.java b/java-scpclient/src/main/java/cz/it4i/fiji/scpclient/SshExecuteCommandException.java
new file mode 100644
index 0000000000000000000000000000000000000000..052ec9d956919268f8ccbd8f8a020ae666063848
--- /dev/null
+++ b/java-scpclient/src/main/java/cz/it4i/fiji/scpclient/SshExecuteCommandException.java
@@ -0,0 +1,36 @@
+
+package cz.it4i.fiji.scpclient;
+
+import com.jcraft.jsch.JSchException;
+
+import java.util.List;
+
+public class SshExecuteCommandException extends JSchException {
+
+	private int exitStatus;
+	private List<String> stdout;
+	private List<String> stderr;
+
+	public SshExecuteCommandException(int exitStatus, List<String> stdout,
+		List<String> stderr)
+	{
+		super("exitStatus: " + exitStatus + ", error output: " + String.join("\n",
+			stderr));
+		this.exitStatus = exitStatus;
+		this.stdout = stdout;
+		this.stderr = stderr;
+	}
+
+	public int getExitStatus() {
+		return exitStatus;
+	}
+
+	public List<String> getStdout() {
+		return stdout;
+	}
+
+	public List<String> getStderr() {
+		return stderr;
+	}
+
+}