@@ -6,40 +6,66 @@ 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? , open val operation : String , open val desc : String? , override val cause : Throwable ? = null )
16+ : RuntimeException () {
17+ fun reason (): String {
18+ return this .javaClass.simpleName
19+ }
1020
11- class ContentLengthError (override val message : String , override val cause : Throwable ? ) : RepoSizeError, RuntimeException()
21+ fun reasonDesc (): String {
22+ return when (desc) {
23+ desc -> String .format(" %s: %s" , this .operation, desc)
24+ else -> String .format(" %s" , this .operation)
25+ }
26+ }
27+ }
1228
13- class ZipFileError (override val message : String , override val cause : Throwable ? ) : RuntimeException()
29+ class NoChangeRequiredException (operation : String , desc : String? , cause : Throwable ? = null )
30+ : FeatureDevException (message(" amazonqFeatureDev.exception.no_change_required_exception" ), operation, desc, cause)
1431
15- class CodeIterationLimitError (override val message : String , override val cause : Throwable ? ) : RuntimeException()
32+ class ContentLengthException (override val message : String = message("amazonqFeatureDev.content_length.error_text"),
33+ operation : String , desc : String? , cause : Throwable ? = null )
34+ : RepoSizeError , FeatureDevException (message, operation, desc, cause)
1635
17- class MonthlyConversationLimitError (override val message : String , override val cause : Throwable ? ) : RuntimeException()
36+ class ZipFileCorruptedException (operation : String , desc : String? , cause : Throwable ? = null )
37+ : FeatureDevException (" The zip file is corrupted" , operation, desc, cause)
1838
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)
39+ class UploadURLExpired (operation : String , desc : String? , cause : Throwable ? = null )
40+ : FeatureDevException (message(" amazonqFeatureDev.exception.upload_url_expiry" ), operation, desc, cause)
2541
26- internal fun featureDevServiceError ( message : String? ): Nothing =
27- throw FeatureDevException (message)
42+ class CodeIterationLimitException ( operation : String , desc : String? , cause : Throwable ? = null )
43+ : FeatureDevException (message( " amazonqFeatureDev.code_generation.iteration_limit.error_text " ), operation, desc, cause )
2844
29- internal fun codeGenerationFailedError (): Nothing =
30- throw FeatureDevException (message( " amazonqFeatureDev.code_generation.failed_generation " ) )
45+ class MonthlyConversationLimitError ( message : String , operation : String , desc : String? , cause : Throwable ? = null )
46+ : FeatureDevException (message, operation, desc, cause )
3147
32- internal fun uploadCodeError (): Nothing =
33- throw FeatureDevException (message(" amazonqFeatureDev.exception.upload_code " ) )
48+ class GuardrailsException ( operation : String , desc : String? , cause : Throwable ? = null )
49+ : FeatureDevException (message(" amazonqFeatureDev.exception.guardrails " ), operation, desc, cause )
3450
35- internal fun conversationIdNotFound (): Nothing =
36- throw FeatureDevException (message(" amazonqFeatureDev.exception.conversation_not_found " ) )
51+ class PromptRefusalException ( operation : String , desc : String? , cause : Throwable ? = null )
52+ : FeatureDevException (message(" amazonqFeatureDev.exception.prompt_refusal " ), operation, desc, cause )
3753
38- internal fun apiError (message : String? , cause : Throwable ? ): Nothing =
39- throw FeatureDevException (message, cause)
54+ class ThrottlingException (operation : String , desc : String? , cause : Throwable ? = null )
55+ : FeatureDevException (message(" amazonqFeatureDev.exception.throttling" ), operation, desc, cause)
56+
57+ class ExportParseException (operation : String , desc : String? , cause : Throwable ? = null )
58+ : FeatureDevException (message(" amazonqFeatureDev.exception.export_parsing_error" ), operation, desc, cause)
59+
60+ class CodeGenerationException (operation : String , desc : String? , cause : Throwable ? = null )
61+ : FeatureDevException (message(" amazonqFeatureDev.code_generation.failed_generation" ), operation, desc, cause)
62+
63+ class UploadCodeException (operation : String , desc : String? , cause : Throwable ? = null )
64+ : FeatureDevException (message(" amazonqFeatureDev.exception.upload_code" ), operation, desc, cause)
65+
66+ class ConversationIdNotFoundException (operation : String , desc : String? , cause : Throwable ? = null )
67+ : FeatureDevException (message(" amazonqFeatureDev.exception.conversation_not_found" ), operation, desc, cause)
4068
41- internal fun exportParseError (): Nothing =
42- throw FeatureDevException (message(" amazonqFeatureDev.exception.export_parsing_error" ))
4369
4470val denyListedErrors = arrayOf(" Deserialization error" , " Inaccessible host" , " UnknownHost" )
4571fun createUserFacingErrorMessage (message : String? ): String? =
0 commit comments