@@ -6,40 +6,69 @@ 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()
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
1018
11- class ContentLengthError (override val message : String , override val cause : Throwable ? ) : RepoSizeError, RuntimeException()
19+ fun reasonDesc (): String =
20+ when (desc) {
21+ desc -> " $operation | Description: $desc "
22+ else -> operation
23+ }
24+ }
1225
13- class ZipFileError (override val message : String , override val cause : Throwable ? ) : RuntimeException()
26+ class NoChangeRequiredException (operation : String , desc : String? , cause : Throwable ? = null ) :
27+ FeatureDevException (message(" amazonqFeatureDev.exception.no_change_required_exception" ), operation, desc, cause)
1428
15- class CodeIterationLimitError (override val message : String , override val cause : Throwable ? ) : RuntimeException()
29+ class EmptyPatchException (operation : String , desc : String? , cause : Throwable ? = null ) :
30+ FeatureDevException (message(" amazonqFeatureDev.exception.guardrails" ), operation, desc, cause)
1631
17- class MonthlyConversationLimitError (override val message : String , override val cause : Throwable ? ) : RuntimeException()
32+ class ContentLengthException (
33+ override val message : String = message("amazonqFeatureDev.content_length.error_text"),
34+ operation : String ,
35+ desc : String? ,
36+ cause : Throwable ? = null ,
37+ ) :
38+ RepoSizeError , FeatureDevException (message, operation, desc, cause)
1839
19- class UploadURLExpired (
20- override val message : String = message(
21- "amazonqFeatureDev.exception.upload_url_expiry"
22- ),
23- override val cause : Throwable ? = null ,
24- ) : FeatureDevException(message, cause)
40+ class ZipFileCorruptedException (operation : String , desc : String? , cause : Throwable ? = null ) :
41+ FeatureDevException (" The zip file is corrupted" , operation, desc, cause)
2542
26- internal fun featureDevServiceError ( message : String? ): Nothing =
27- throw FeatureDevException (message)
43+ class UploadURLExpired ( operation : String , desc : String? , cause : Throwable ? = null ) :
44+ FeatureDevException (message( " amazonqFeatureDev.exception.upload_url_expiry " ), operation, desc, cause )
2845
29- internal fun codeGenerationFailedError (): Nothing =
30- throw FeatureDevException (message(" amazonqFeatureDev.code_generation.failed_generation " ) )
46+ class CodeIterationLimitException ( operation : String , desc : String? , cause : Throwable ? = null ) :
47+ FeatureDevException (message(" amazonqFeatureDev.code_generation.iteration_limit.error_text " ), operation, desc, cause )
3148
32- internal fun uploadCodeError (): Nothing =
33- throw FeatureDevException (message( " amazonqFeatureDev.exception.upload_code " ) )
49+ class MonthlyConversationLimitError ( message : String , operation : String , desc : String? , cause : Throwable ? = null ) :
50+ FeatureDevException (message, operation, desc, cause )
3451
35- internal fun conversationIdNotFound (): Nothing =
36- throw FeatureDevException (message(" amazonqFeatureDev.exception.conversation_not_found " ) )
52+ class GuardrailsException ( operation : String , desc : String? , cause : Throwable ? = null ) :
53+ FeatureDevException (message(" amazonqFeatureDev.exception.guardrails " ), operation, desc, cause )
3754
38- internal fun apiError ( message : String? , cause : Throwable ? ): Nothing =
39- throw FeatureDevException (message, cause)
55+ class PromptRefusalException ( operation : String , desc : String ? , cause : Throwable ? = null ) :
56+ FeatureDevException (message( " amazonqFeatureDev.exception.prompt_refusal " ), operation, desc , cause)
4057
41- internal fun exportParseError (): Nothing =
42- throw FeatureDevException (message(" amazonqFeatureDev.exception.export_parsing_error" ))
58+ class ThrottlingException (operation : String , desc : String? , cause : Throwable ? = null ) :
59+ FeatureDevException (message(" amazonqFeatureDev.exception.throttling" ), operation, desc, cause)
60+
61+ class ExportParseException (operation : String , desc : String? , cause : Throwable ? = null ) :
62+ FeatureDevException (message(" amazonqFeatureDev.exception.export_parsing_error" ), operation, desc, cause)
63+
64+ class CodeGenerationException (operation : String , desc : String? , cause : Throwable ? = null ) :
65+ FeatureDevException (message(" amazonqFeatureDev.code_generation.failed_generation" ), operation, desc, cause)
66+
67+ class UploadCodeException (operation : String , desc : String? , cause : Throwable ? = null ) :
68+ FeatureDevException (message(" amazonqFeatureDev.exception.upload_code" ), operation, desc, cause)
69+
70+ class ConversationIdNotFoundException (operation : String , desc : String? , cause : Throwable ? = null ) :
71+ FeatureDevException (message(" amazonqFeatureDev.exception.conversation_not_found" ), operation, desc, cause)
4372
4473val denyListedErrors = arrayOf(" Deserialization error" , " Inaccessible host" , " UnknownHost" )
4574fun createUserFacingErrorMessage (message : String? ): String? =
0 commit comments