raise `ShCmdError` if the proc's return_code is not 0
        otherwise return self

        ..Usage::

            >>> proc = shcmd.run("ls").raise_for_error()
            >>> proc.return_code == 0
            True

def raise_for_error(self):
        """
        raise `ShCmdError` if the proc's return_code is not 0
        otherwise return self

        ..Usage::

            >>> proc = shcmd.run("ls").raise_for_error()
            >>> proc.return_code == 0
            True

        """
        if self.ok:
            return self
        tip = "running {0} @<{1}> error, return code {2}".format(
            " ".join(self.cmd), self.cwd, self.return_code
        )
        logger.error("{0}\nstdout:{1}\nstderr:{2}\n".format(
            tip, self._stdout.decode("utf8"), self._stderr.decode("utf8")
        ))
        raise ShCmdError(self)