1use std::fmt;
4use std::io;
5
6#[derive(Debug)]
8pub enum JavaError {
9 InvalidJavaPath(String),
11
12 NotFound(String),
14
15 IoError(io::Error),
17
18 ExecuteError(String),
20
21 RuntimeError(String),
23
24 ExecutionFailed(String),
26
27 Other(String),
29}
30
31impl fmt::Display for JavaError {
32 fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
33 match self {
34 JavaError::InvalidJavaPath(msg) => write!(f, "Invalid Java path: {}", msg),
35 JavaError::NotFound(msg) => write!(f, "Not found: {}", msg),
36 JavaError::IoError(err) => write!(f, "IO error: {}", err),
37 JavaError::ExecuteError(msg) => write!(f, "Execute error: {}", msg),
38 JavaError::RuntimeError(msg) => write!(f, "Runtime error: {}", msg),
39 JavaError::ExecutionFailed(msg) => write!(f, "Execution failed: {}", msg),
40 JavaError::Other(msg) => write!(f, "Other error: {}", msg),
41 }
42 }
43}
44
45impl std::error::Error for JavaError {
46 fn source(&self) -> Option<&(dyn std::error::Error + 'static)> {
47 match self {
48 JavaError::IoError(err) => Some(err),
49 _ => None,
50 }
51 }
52}
53
54impl From<io::Error> for JavaError {
55 fn from(err: io::Error) -> Self {
56 JavaError::IoError(err)
57 }
58}