summaryrefslogtreecommitdiff
path: root/src/main/java/exceptions/VSProcessException.java
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2025-06-20 18:47:45 +0300
committerPaul Buetow <paul@buetow.org>2025-06-20 18:47:45 +0300
commit70fc0505b223f7bf17d3671d0532773359cf7858 (patch)
tree1c244371e6a4e89e7694d5691db6a14b0ba2da06 /src/main/java/exceptions/VSProcessException.java
parentf6d2a6bbbc37c552accf91a13ccd6ea45ecf8e73 (diff)
Implement proper exception hierarchy and consistent error handling
- Create base exception classes: - VSSimulatorException: Base checked exception for all simulator errors - VSSimulatorRuntimeException: Base unchecked exception for unrecoverable errors - Refactor existing exceptions to extend from base class: - VSEventNotCopyableException: Now includes better error messages - VSParseIntegerVectorException: Added constructors with cause support - VSNegativeNumberException: Added field name and value parameters - Add new specific exception types: - VSConfigurationException: For configuration errors - VSSerializationException: For save/load operations - VSProcessException: For process-related errors - VSProtocolException: For protocol execution errors - Create VSErrorHandler utility class: - Centralized error logging and user notification - Consistent error handling patterns - Helper methods for warning and error dialogs - Update exception handling in code: - VSClassLoader: Better error messages and specific exception handling - Timestamp events: Catch RuntimeException for custom actions - All 132 unit tests pass 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
Diffstat (limited to 'src/main/java/exceptions/VSProcessException.java')
-rw-r--r--src/main/java/exceptions/VSProcessException.java56
1 files changed, 56 insertions, 0 deletions
diff --git a/src/main/java/exceptions/VSProcessException.java b/src/main/java/exceptions/VSProcessException.java
new file mode 100644
index 0000000..3c0910b
--- /dev/null
+++ b/src/main/java/exceptions/VSProcessException.java
@@ -0,0 +1,56 @@
+package exceptions;
+
+/**
+ * Exception thrown when there is an error related to process operations in the simulator.
+ * This includes process creation, communication, or state management errors.
+ *
+ * @author Paul C. Buetow
+ */
+public class VSProcessException extends VSSimulatorException {
+ /** The serial version uid */
+ private static final long serialVersionUID = 1L;
+
+ private final int processId;
+
+ /**
+ * Constructs a new process exception with the specified detail message.
+ *
+ * @param message the detail message
+ */
+ public VSProcessException(String message) {
+ super(message);
+ this.processId = -1;
+ }
+
+ /**
+ * Constructs a new process exception for a specific process.
+ *
+ * @param processId the ID of the process that encountered the error
+ * @param message the detail message
+ */
+ public VSProcessException(int processId, String message) {
+ super(String.format("Process %d: %s", processId, message));
+ this.processId = processId;
+ }
+
+ /**
+ * Constructs a new process exception with the specified detail message and cause.
+ *
+ * @param processId the ID of the process that encountered the error
+ * @param message the detail message
+ * @param cause the cause
+ */
+ public VSProcessException(int processId, String message, Throwable cause) {
+ super(String.format("Process %d: %s", processId, message), cause);
+ this.processId = processId;
+ }
+
+ /**
+ * Gets the process ID associated with this exception.
+ *
+ * @return the process ID, or -1 if not specific to a process
+ */
+ public int getProcessId() {
+ return processId;
+ }
+} \ No newline at end of file