@@ -6,45 +6,79 @@ package software.aws.toolkits.jetbrains.services.amazonqFeatureDev
66import software.aws.toolkits.jetbrains.services.amazonq.RepoSizeError
77import software.aws.toolkits.resources.message
88
9- open class FeatureDevException (override val message : String? , override val cause : Throwable ? = null ) : RuntimeException()
10-
11- class ContentLengthError (override val message : String , override val cause : Throwable ? ) : RepoSizeError, RuntimeException()
12-
13- class ZipFileError (override val message : String , override val cause : Throwable ? ) : RuntimeException()
9+ /* *
10+ * FeatureDevException models failures from feature dev operations.
11+ *
12+ * - Each failure is annotated based on className, operation, and a short desc. Use the `reason()` and `reasonDesc()` members for instrumentation.
13+ * - To throw an exception without modeling, throw FeatureDevException directly.
14+ */
15+ open class FeatureDevException (override val message : String? , val operation : String , val desc : String? , override val cause : Throwable ? = null ) :
16+ RuntimeException () {
17+ fun reason (): String = this .javaClass.simpleName
18+
19+ fun reasonDesc (): String =
20+ when (desc) {
21+ desc -> " $operation | Description: $desc "
22+ else -> operation
23+ }
24+ }
25+
26+ class NoChangeRequiredException (operation : String , desc : String? , cause : Throwable ? = null ) :
27+ FeatureDevException (message(" amazonqFeatureDev.exception.no_change_required_exception" ), operation, desc, cause)
1428
1529class NoChangeRequiredException (override val message : String , override val cause : Throwable ? ) : RuntimeException()
1630
1731class CodeIterationLimitError (override val message : String , override val cause : Throwable ? ) : RuntimeException()
1832
19- class MonthlyConversationLimitError (override val message : String , override val cause : Throwable ? ) : RuntimeException()
33+ class EmptyPatchException (operation : String , desc : String? , cause : Throwable ? = null ) :
34+ FeatureDevException (message(" amazonqFeatureDev.exception.guardrails" ), operation, desc, cause)
2035
21- class UploadURLExpired (
22- override val message : String = message(
23- "amazonqFeatureDev.exception.upload_url_expiry"
24- ),
25- override val cause : Throwable ? = null ,
26- ) : FeatureDevException(message, cause)
36+ class ContentLengthException (
37+ override val message : String = message("amazonqFeatureDev.content_length.error_text"),
38+ operation : String ,
39+ desc : String? ,
40+ cause : Throwable ? = null ,
41+ ) :
42+ RepoSizeError , FeatureDevException (message, operation, desc, cause)
2743
28- internal fun featureDevServiceError ( message : String? ): Nothing =
29- throw FeatureDevException (message )
44+ class ZipFileCorruptedException ( operation : String , desc : String? , cause : Throwable ? = null ) :
45+ FeatureDevException (" The zip file is corrupted " , operation, desc, cause )
3046
31- internal fun codeGenerationFailedError (): Nothing =
32- throw FeatureDevException (message(" amazonqFeatureDev.code_generation.failed_generation" ))
47+ class UploadURLExpired (operation : String , desc : String? , cause : Throwable ? = null ) :
48+ FeatureDevException (message(" amazonqFeatureDev.exception.upload_url_expiry" ), operation, desc, cause)
49+
50+ class CodeIterationLimitException (operation : String , desc : String? , cause : Throwable ? = null ) :
51+ FeatureDevException (message(" amazonqFeatureDev.code_generation.iteration_limit.error_text" ), operation, desc, cause)
3352
3453internal fun noChangeRequiredException (): Nothing =
3554 throw NoChangeRequiredException (message(" amazonqFeatureDev.exception.no_change_required_exception" ), cause = null )
3655
3756internal fun uploadCodeError (): Nothing =
3857 throw FeatureDevException (message(" amazonqFeatureDev.exception.upload_code" ))
58+
59+ class MonthlyConversationLimitError (message : String , operation : String , desc : String? , cause : Throwable ? = null ) :
60+ FeatureDevException (message, operation, desc, cause)
61+
62+ class GuardrailsException (operation : String , desc : String? , cause : Throwable ? = null ) :
63+ FeatureDevException (message(" amazonqFeatureDev.exception.guardrails" ), operation, desc, cause)
64+
65+ class PromptRefusalException (operation : String , desc : String? , cause : Throwable ? = null ) :
66+ FeatureDevException (message(" amazonqFeatureDev.exception.prompt_refusal" ), operation, desc, cause)
67+
68+ class ThrottlingException (operation : String , desc : String? , cause : Throwable ? = null ) :
69+ FeatureDevException (message(" amazonqFeatureDev.exception.throttling" ), operation, desc, cause)
70+
71+ class ExportParseException (operation : String , desc : String? , cause : Throwable ? = null ) :
72+ FeatureDevException (message(" amazonqFeatureDev.exception.export_parsing_error" ), operation, desc, cause)
3973
40- internal fun conversationIdNotFound (): Nothing =
41- throw FeatureDevException (message(" amazonqFeatureDev.exception.conversation_not_found " ) )
74+ class CodeGenerationException ( operation : String , desc : String? , cause : Throwable ? = null ) :
75+ FeatureDevException (message(" amazonqFeatureDev.code_generation.failed_generation " ), operation, desc, cause )
4276
43- internal fun apiError ( message : String? , cause : Throwable ? ): Nothing =
44- throw FeatureDevException (message, cause)
77+ class UploadCodeException ( operation : String , desc : String ? , cause : Throwable ? = null ) :
78+ FeatureDevException (message( " amazonqFeatureDev.exception.upload_code " ), operation, desc , cause)
4579
46- internal fun exportParseError (): Nothing =
47- throw FeatureDevException (message(" amazonqFeatureDev.exception.export_parsing_error " ) )
80+ class ConversationIdNotFoundException ( operation : String , desc : String? , cause : Throwable ? = null ) :
81+ FeatureDevException (message(" amazonqFeatureDev.exception.conversation_not_found " ), operation, desc, cause )
4882
4983val denyListedErrors = arrayOf(" Deserialization error" , " Inaccessible host" , " UnknownHost" )
5084fun createUserFacingErrorMessage (message : String? ): String? =
0 commit comments