forked from dapr/java-sdk
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathTaskFailedException.java
More file actions
77 lines (69 loc) · 2.55 KB
/
TaskFailedException.java
File metadata and controls
77 lines (69 loc) · 2.55 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
/*
* Copyright 2025 The Dapr Authors
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* http://www.apache.org/licenses/LICENSE-2.0
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
limitations under the License.
*/
package io.dapr.durabletask;
/**
* Exception that gets thrown when awaiting a {@link Task} for an activity or sub-orchestration that fails with an
* unhandled exception.
*
* <p>Detailed information associated with a particular task failure can be retrieved
* using the {@link #getErrorDetails()} method.</p>
*/
public class TaskFailedException extends RuntimeException {
private final FailureDetails details;
private final String taskName;
private final int taskId;
TaskFailedException(String taskName, int taskId, FailureDetails details) {
this(getExceptionMessage(taskName, taskId, details), taskName, taskId, details);
}
TaskFailedException(String message, String taskName, int taskId, FailureDetails details) {
super(message);
this.taskName = taskName;
this.taskId = taskId;
this.details = details;
}
/**
* Gets the ID of the failed task.
*
* <p>Each durable task (activities, timers, sub-orchestrations, etc.) scheduled by a task orchestrator has an
* auto-incrementing ID associated with it. This ID is used to distinguish tasks from one another, even if, for
* example, they are tasks that call the same activity. This ID can therefore be used to more easily correlate a
* specific task failure to a specific task.</p>
*
* @return the ID of the failed task
*/
public int getTaskId() {
return this.taskId;
}
/**
* Gets the name of the failed task.
*
* @return the name of the failed task
*/
public String getTaskName() {
return this.taskName;
}
/**
* Gets the details of the task failure, including exception information.
*
* @return the details of the task failure
*/
public FailureDetails getErrorDetails() {
return this.details;
}
private static String getExceptionMessage(String taskName, int taskId, FailureDetails details) {
return String.format("Task '%s' (#%d) failed with an unhandled exception: %s",
taskName,
taskId,
details.getErrorMessage());
}
}