[DAS] Fixes hover for try/catch error/stack

Fixes: https://github.com/dart-lang/sdk/issues/55907
Change-Id: I385483eaf5cba4fbac10b402cdb87ace51e9b020
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/456400
Commit-Queue: Samuel Rawlins <srawlins@google.com>
Auto-Submit: Felipe Morschel <git@fmorschel.dev>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Reviewed-by: Samuel Rawlins <srawlins@google.com>
diff --git a/pkg/analysis_server/lib/src/computer/computer_hover.dart b/pkg/analysis_server/lib/src/computer/computer_hover.dart
index 283944e..1030b96 100644
--- a/pkg/analysis_server/lib/src/computer/computer_hover.dart
+++ b/pkg/analysis_server/lib/src/computer/computer_hover.dart
@@ -46,6 +46,7 @@
     }
 
     if (node is CompilationUnitMember ||
+        node is CatchClauseParameter ||
         node is Expression ||
         node is FormalParameter ||
         node is MethodDeclaration ||
@@ -188,6 +189,7 @@
   /// Returns `null` if there is no valid entity for this hover.
   SyntacticEntity? _locationEntity(AstNode node) {
     return switch (node) {
+      CatchClauseParameter() => node.name,
       NamedCompilationUnitMember() => node.name,
       Expression() => node,
       ExtensionDeclaration() => node.name,
diff --git a/pkg/analysis_server/test/lsp/hover_test.dart b/pkg/analysis_server/test/lsp/hover_test.dart
index 9ff3e39..ab4f87d 100644
--- a/pkg/analysis_server/test/lsp/hover_test.dart
+++ b/pkg/analysis_server/test/lsp/hover_test.dart
@@ -1244,6 +1244,34 @@
     await assertStringContents(content, equals(expected));
   }
 
+  Future<void> test_tryCatch_error() async {
+    var content = '''
+void foo() {
+  try {} on Exception catch ([!err^or!], stack) {}
+}
+''';
+    var expected = '''
+```dart
+Exception error
+```
+Type: `Exception`''';
+    await assertStringContents(content, equals(expected));
+  }
+
+  Future<void> test_tryCatch_stack() async {
+    var content = '''
+void foo() {
+  try {} on Exception catch (error, [!stac^k!]) {}
+}
+''';
+    var expected = '''
+```dart
+StackTrace stack
+```
+Type: `StackTrace`''';
+    await assertStringContents(content, equals(expected));
+  }
+
   Future<void> test_typeParameter() async {
     var content = '''
 class C<[!^T!]> {}