class ProcessExecuter::Error
Base class for all {ProcessExecuter} errors
It is recommended to rescue {ProcessExecuter::Error} to catch any runtime error raised by this gem unless you need more specific error handling.
Custom errors are arranged in the following class hierarchy:
“‘text ::StandardError
└─> Error ├─> ArgumentError ├─> CommandError │ ├─> FailedError │ └─> SignaledError │ └─> TimeoutError ├─> ProcessIOError └─> SpawnError
“‘
| Error
Class | Description | | — | — | | ‘Error` | This catch-all error serves as the base class for other custom errors. | | `ArgumentError` | Raised when an invalid argument is passed to a method. | | `CommandError` | A subclass of this error is raised when there is a problem executing a command. | | `FailedError` | Raised when the command exits with a non-zero exit status. | | `SignaledError` | Raised when the command is terminated as a result of receiving a signal. This could happen if the process is forcibly terminated or if there is a serious system error. | | `TimeoutError` | This is a specific type of `SignaledError` that is raised when the command times out and is killed via the SIGKILL signal. | | `ProcessIOError` | Raised when an error was encountered reading or writing to the command’s subprocess. | | ‘SpawnError` | Raised when the process could not execute. Check the `#cause` for the original exception from `Process.spawn`. |
@example Rescuing any error
begin ProcessExecuter.run('git', 'status') rescue ProcessExecuter::Error => e puts "An error occurred: #{e.message}" end
@example Rescuing a timeout error
begin timeout_after = 0.1 # seconds ProcessExecuter.run('sleep', '1', timeout_after:) rescue ProcessExecuter::TimeoutError => e # Catch the more specific error first! puts "Command took too long and timed out: #{e}" rescue ProcessExecuter::Error => e puts "Some other error occurred: #{e}" end
@api public