This is an automated email from the ASF dual-hosted git repository.

jamesfredley pushed a commit to branch build/empty-catch-codenarc
in repository https://gitbox.apache.org/repos/asf/grails-core.git

commit 75f02aaff8f018ffe3dc060ee81ed230e818d0c6
Author: James Fredley <[email protected]>
AuthorDate: Fri Jul 17 04:46:09 2026 -0400

    Enable CodeNarc empty catch checks
    
    Assisted-by: opencode:gpt-5.6-sol
---
 .../codenarc/codenarc.groovy                                      | 4 ++++
 .../ui/command/GrailsApplicationContextCommandRunner.groovy       | 2 +-
 .../groovy/grails/ui/script/GrailsApplicationScriptRunner.groovy  | 2 +-
 .../grails/artefact/controller/support/ResponseRenderer.groovy    | 2 +-
 .../main/groovy/grails/boot/config/GrailsAutoConfiguration.groovy | 3 +--
 .../main/groovy/grails/boot/config/tools/ClassPathScanner.groovy  | 2 +-
 .../grails/dev/commands/template/TemplateRendererImpl.groovy      | 2 +-
 .../support/PersistenceContextInterceptorExecutor.groovy          | 2 +-
 .../groovy/org/grails/core/exceptions/DefaultErrorsPrinter.groovy | 6 +++---
 .../main/groovy/org/grails/plugins/support/WatchPattern.groovy    | 2 +-
 .../groovy/org/grails/gorm/graphql/GraphQLEntityHelper.groovy     | 4 +++-
 .../graphql/entity/property/impl/PersistentGraphQLProperty.groovy | 2 +-
 .../property/manager/DefaultGraphQLDomainPropertyManager.groovy   | 2 +-
 .../grails/orm/hibernate/AbstractHibernateGormInstanceApi.groovy  | 2 +-
 .../connections/HibernateConnectionSourceSettings.groovy          | 2 +-
 .../org/grails/orm/hibernate/support/HibernateRuntimeUtils.groovy | 2 +-
 .../groovy/org/grails/datastore/gorm/mongo/simple/EnumType.groovy | 2 +-
 .../src/main/groovy/grails/databinding/SimpleDataBinder.groovy    | 6 ++++--
 .../org/grails/compiler/gorm/GormEntityTransformation.groovy      | 2 +-
 .../datastore/gorm/bootstrap/AbstractDatastoreInitializer.groovy  | 2 +-
 .../apache/grails/data/testing/tck/tests/DomainEventsSpec.groovy  | 2 +-
 .../grails/plugins/datasource/EmbeddedDatabaseShutdownHook.groovy | 2 +-
 .../groovy/org/grails/datastore/mapping/reflect/AstUtils.groovy   | 2 +-
 .../org/grails/scaffolding/model/DomainModelServiceImpl.groovy    | 2 +-
 .../main/groovy/org/grails/gsp/ModelRecordingGroovyPage.groovy    | 2 +-
 .../main/groovy/org/grails/plugins/web/taglib/FormTagLib.groovy   | 2 +-
 .../plugins/web/rest/plugin/RestResponderGrailsPlugin.groovy      | 2 +-
 grails-shell-cli/src/main/groovy/org/grails/cli/GrailsCli.groovy  | 8 ++++----
 .../main/groovy/org/grails/cli/gradle/GradleAsyncInvoker.groovy   | 2 +-
 .../org/grails/cli/gradle/cache/CachedGradleOperation.groovy      | 2 +-
 .../grails/cli/interactive/completers/ClassNameCompleter.groovy   | 2 +-
 .../main/groovy/org/grails/cli/profile/ProfileRepoConfig.groovy   | 2 +-
 .../org/grails/cli/profile/commands/CreateAppCommand.groovy       | 2 +-
 .../grails/cli/profile/commands/DefaultMultiStepCommand.groovy    | 2 +-
 .../cli/profile/commands/templates/TemplateRendererImpl.groovy    | 2 +-
 .../main/groovy/grails/testing/services/ServiceUnitTest.groovy    | 2 +-
 .../injection/testing/IntegrationTestAstTransformation.groovy     | 2 +-
 .../src/main/groovy/org/grails/testing/GrailsUnitTest.groovy      | 4 ++--
 .../org/grails/testing/spock/WebSetupSpecInterceptor.groovy       | 2 +-
 .../grails/views/resolve/GenericGroovyTemplateResolver.groovy     | 2 +-
 .../main/groovy/grails/web/databinding/GrailsWebDataBinder.groovy | 4 ++--
 .../groovy/org/grails/web/mapping/DefaultLinkGenerator.groovy     | 4 +++-
 42 files changed, 59 insertions(+), 50 deletions(-)

diff --git 
a/build-logic/plugins/src/main/resources/META-INF/org.apache.grails.buildsrc.grails-code-style/codenarc/codenarc.groovy
 
b/build-logic/plugins/src/main/resources/META-INF/org.apache.grails.buildsrc.grails-code-style/codenarc/codenarc.groovy
index 80880ac32d..42075d180d 100644
--- 
a/build-logic/plugins/src/main/resources/META-INF/org.apache.grails.buildsrc.grails-code-style/codenarc/codenarc.groovy
+++ 
b/build-logic/plugins/src/main/resources/META-INF/org.apache.grails.buildsrc.grails-code-style/codenarc/codenarc.groovy
@@ -26,6 +26,10 @@ ruleset {
     }
     ClosureStatementOnOpeningLineOfMultipleLineClosure
     ConsecutiveBlankLines
+    EmptyCatchBlock {
+        ignoreRegex = 'ignore|ignored'
+        priority = 3
+    }
     FileEndsWithoutNewline
     NoTabCharacter
     DuplicateImport
diff --git 
a/grails-console/src/main/groovy/grails/ui/command/GrailsApplicationContextCommandRunner.groovy
 
b/grails-console/src/main/groovy/grails/ui/command/GrailsApplicationContextCommandRunner.groovy
index bc292a074d..30b9f69e6b 100644
--- 
a/grails-console/src/main/groovy/grails/ui/command/GrailsApplicationContextCommandRunner.groovy
+++ 
b/grails-console/src/main/groovy/grails/ui/command/GrailsApplicationContextCommandRunner.groovy
@@ -85,7 +85,7 @@ class GrailsApplicationContextCommandRunner extends 
DevelopmentGrailsApplication
             finally {
                 try {
                     ctx?.close()
-                } catch (Throwable e) {
+                } catch (Throwable ignored) {
                     // ignore
                 }
             }
diff --git 
a/grails-console/src/main/groovy/grails/ui/script/GrailsApplicationScriptRunner.groovy
 
b/grails-console/src/main/groovy/grails/ui/script/GrailsApplicationScriptRunner.groovy
index 8363d37589..3cf734b455 100644
--- 
a/grails-console/src/main/groovy/grails/ui/script/GrailsApplicationScriptRunner.groovy
+++ 
b/grails-console/src/main/groovy/grails/ui/script/GrailsApplicationScriptRunner.groovy
@@ -99,7 +99,7 @@ class GrailsApplicationScriptRunner extends 
DevelopmentGrailsApplication {
                     i.destroy()
                 }
                 ctx?.close()
-            } catch (Throwable e) {
+            } catch (Throwable ignored) {
                 // ignore
             }
         }
diff --git 
a/grails-controllers/src/main/groovy/grails/artefact/controller/support/ResponseRenderer.groovy
 
b/grails-controllers/src/main/groovy/grails/artefact/controller/support/ResponseRenderer.groovy
index 8ef0a3576e..e014c75997 100644
--- 
a/grails-controllers/src/main/groovy/grails/artefact/controller/support/ResponseRenderer.groovy
+++ 
b/grails-controllers/src/main/groovy/grails/artefact/controller/support/ResponseRenderer.groovy
@@ -420,7 +420,7 @@ trait ResponseRenderer extends WebAttributes {
                     if (input) {
                         try {
                             ((InputStream) input).close()
-                        } catch (IOException e) {
+                        } catch (IOException ignored) {
                             // ignore
                         }
                     }
diff --git 
a/grails-core/src/main/groovy/grails/boot/config/GrailsAutoConfiguration.groovy 
b/grails-core/src/main/groovy/grails/boot/config/GrailsAutoConfiguration.groovy
index 91190446d3..1264706254 100644
--- 
a/grails-core/src/main/groovy/grails/boot/config/GrailsAutoConfiguration.groovy
+++ 
b/grails-core/src/main/groovy/grails/boot/config/GrailsAutoConfiguration.groovy
@@ -60,7 +60,7 @@ class GrailsAutoConfiguration implements 
GrailsApplicationClass, ApplicationCont
                 list.add(GroovyAwareInfrastructureAdvisorAutoProxyCreator)
                 list.add(GroovyAwareAspectJAwareAdvisorAutoProxyCreator)
             }
-        } catch (Throwable e) {
+        } catch (Throwable ignored) {
             // ignore
         }
     }
@@ -151,4 +151,3 @@ class GrailsAutoConfiguration implements 
GrailsApplicationClass, ApplicationCont
     }
 
 }
-
diff --git 
a/grails-core/src/main/groovy/grails/boot/config/tools/ClassPathScanner.groovy 
b/grails-core/src/main/groovy/grails/boot/config/tools/ClassPathScanner.groovy
index c04af0f3e0..1d4dff31ac 100644
--- 
a/grails-core/src/main/groovy/grails/boot/config/tools/ClassPathScanner.groovy
+++ 
b/grails-core/src/main/groovy/grails/boot/config/tools/ClassPathScanner.groovy
@@ -244,7 +244,7 @@ class ClassPathScanner {
                 URL withoutBang = new URL("${urlStr.substring(0, 
urlStr.length() - 2)}/")
                 addURL(withoutBang)
 
-            } catch (MalformedURLException e) {
+            } catch (MalformedURLException ignored) {
                 // ignore, running as a WAR
             }
         }
diff --git 
a/grails-core/src/main/groovy/grails/dev/commands/template/TemplateRendererImpl.groovy
 
b/grails-core/src/main/groovy/grails/dev/commands/template/TemplateRendererImpl.groovy
index c3b3f1a0a8..47c8f4dc3b 100644
--- 
a/grails-core/src/main/groovy/grails/dev/commands/template/TemplateRendererImpl.groovy
+++ 
b/grails-core/src/main/groovy/grails/dev/commands/template/TemplateRendererImpl.groovy
@@ -176,7 +176,7 @@ class TemplateRendererImpl implements TemplateRenderer {
                         } finally {
                             try {
                                 reader.close()
-                            } catch (e) {
+                            } catch (ignored) {
                                 // ignore
                             }
                         }
diff --git 
a/grails-core/src/main/groovy/grails/persistence/support/PersistenceContextInterceptorExecutor.groovy
 
b/grails-core/src/main/groovy/grails/persistence/support/PersistenceContextInterceptorExecutor.groovy
index 9a0421eae6..3257e6aede 100644
--- 
a/grails-core/src/main/groovy/grails/persistence/support/PersistenceContextInterceptorExecutor.groovy
+++ 
b/grails-core/src/main/groovy/grails/persistence/support/PersistenceContextInterceptorExecutor.groovy
@@ -70,7 +70,7 @@ class PersistenceContextInterceptorExecutor {
         for (PersistenceContextInterceptor i in interceptors) {
             try {
                 i.destroy()
-            } catch (e) {
+            } catch (ignored) {
                 // ignore exception
             }
         }
diff --git 
a/grails-core/src/main/groovy/org/grails/core/exceptions/DefaultErrorsPrinter.groovy
 
b/grails-core/src/main/groovy/org/grails/core/exceptions/DefaultErrorsPrinter.groovy
index ccbae3399e..cb4ed27694 100644
--- 
a/grails-core/src/main/groovy/org/grails/core/exceptions/DefaultErrorsPrinter.groovy
+++ 
b/grails-core/src/main/groovy/org/grails/core/exceptions/DefaultErrorsPrinter.groovy
@@ -125,13 +125,13 @@ class DefaultErrorsPrinter extends 
DefaultStackTracePrinter implements CodeSnipp
                             }
                         }
                     }
-                    catch (e) {
+                    catch (ignored) {
                         // ignore
                     }
                     finally {
                         try {
                             input?.close()
-                        } catch (e) {
+                        } catch (ignored) {
                             // ignore
                         }
                         pw.print(formatCodeSnippetEnd(res, lineNumber))
@@ -164,7 +164,7 @@ class DefaultErrorsPrinter extends DefaultStackTracePrinter 
implements CodeSnipp
                             break
                         }
                     }
-                } catch (e) {
+                } catch (ignored) {
                     // ignore
                 }
             }
diff --git 
a/grails-core/src/main/groovy/org/grails/plugins/support/WatchPattern.groovy 
b/grails-core/src/main/groovy/org/grails/plugins/support/WatchPattern.groovy
index 1673bed636..315092aecc 100644
--- a/grails-core/src/main/groovy/org/grails/plugins/support/WatchPattern.groovy
+++ b/grails-core/src/main/groovy/org/grails/plugins/support/WatchPattern.groovy
@@ -64,7 +64,7 @@ class WatchPattern {
                 def matchPath = /${directory.canonicalPath.replaceAll('\\\\', 
'/')}.+?$ext/
                 def absolutePath = new 
File(path).canonicalPath.replaceAll('\\\\', '/')
                 return absolutePath ==~ matchPath
-            } catch (e) {
+            } catch (ignored) {
                 // ignore
             }
         }
diff --git 
a/grails-data-graphql/core/src/main/groovy/org/grails/gorm/graphql/GraphQLEntityHelper.groovy
 
b/grails-data-graphql/core/src/main/groovy/org/grails/gorm/graphql/GraphQLEntityHelper.groovy
index 3db86a1703..a2a2cce9ac 100644
--- 
a/grails-data-graphql/core/src/main/groovy/org/grails/gorm/graphql/GraphQLEntityHelper.groovy
+++ 
b/grails-data-graphql/core/src/main/groovy/org/grails/gorm/graphql/GraphQLEntityHelper.groovy
@@ -60,7 +60,9 @@ class GraphQLEntityHelper {
                     if (hibernateMapping.isAssignableFrom(mapping.class)) {
                         description = 
hibernateMapping.getMethod('getComment').invoke(mapping)
                     }
-                } catch (ClassNotFoundException e) { }
+                } catch (ClassNotFoundException ignored) {
+                    // intentional: Hibernate support is optional
+                }
             }
         }
         descriptions.put(entity, description)
diff --git 
a/grails-data-graphql/core/src/main/groovy/org/grails/gorm/graphql/entity/property/impl/PersistentGraphQLProperty.groovy
 
b/grails-data-graphql/core/src/main/groovy/org/grails/gorm/graphql/entity/property/impl/PersistentGraphQLProperty.groovy
index db60118ba1..6adfc3a5ae 100644
--- 
a/grails-data-graphql/core/src/main/groovy/org/grails/gorm/graphql/entity/property/impl/PersistentGraphQLProperty.groovy
+++ 
b/grails-data-graphql/core/src/main/groovy/org/grails/gorm/graphql/entity/property/impl/PersistentGraphQLProperty.groovy
@@ -134,7 +134,7 @@ class PersistentGraphQLProperty extends 
OrderedGraphQLProperty {
                     deprecationReason = Schema.DEFAULT_DEPRECATION_REASON
                 }
             }
-        } catch (NoSuchFieldException e) { }
+        } catch (NoSuchFieldException ignored) { }
 
         if (mapping.deprecated && deprecationReason == null) {
             deprecationReason = Schema.DEFAULT_DEPRECATION_REASON
diff --git 
a/grails-data-graphql/core/src/main/groovy/org/grails/gorm/graphql/entity/property/manager/DefaultGraphQLDomainPropertyManager.groovy
 
b/grails-data-graphql/core/src/main/groovy/org/grails/gorm/graphql/entity/property/manager/DefaultGraphQLDomainPropertyManager.groovy
index 3e1dcd6d0d..f95ba39b3f 100644
--- 
a/grails-data-graphql/core/src/main/groovy/org/grails/gorm/graphql/entity/property/manager/DefaultGraphQLDomainPropertyManager.groovy
+++ 
b/grails-data-graphql/core/src/main/groovy/org/grails/gorm/graphql/entity/property/manager/DefaultGraphQLDomainPropertyManager.groovy
@@ -49,7 +49,7 @@ class DefaultGraphQLDomainPropertyManager implements 
GraphQLDomainPropertyManage
     static {
         try {
             derivedMethod = Property.getMethod('isDerived', (Class<?>[]) null)
-        } catch (NoSuchMethodException | SecurityException e) { }
+        } catch (NoSuchMethodException | SecurityException ignored) { }
     }
 
     @Override
diff --git 
a/grails-data-hibernate5/core/src/main/groovy/org/grails/orm/hibernate/AbstractHibernateGormInstanceApi.groovy
 
b/grails-data-hibernate5/core/src/main/groovy/org/grails/orm/hibernate/AbstractHibernateGormInstanceApi.groovy
index 3f3abea76b..745de02e70 100644
--- 
a/grails-data-hibernate5/core/src/main/groovy/org/grails/orm/hibernate/AbstractHibernateGormInstanceApi.groovy
+++ 
b/grails-data-hibernate5/core/src/main/groovy/org/grails/orm/hibernate/AbstractHibernateGormInstanceApi.groovy
@@ -337,7 +337,7 @@ abstract class AbstractHibernateGormInstanceApi<D> extends 
GormInstanceApi<D> {
                         }
                     }
                 }
-                catch (InvalidPropertyException ipe) {
+                catch (InvalidPropertyException ignored) {
                     // property is not accessable
                 }
             }
diff --git 
a/grails-data-hibernate5/core/src/main/groovy/org/grails/orm/hibernate/connections/HibernateConnectionSourceSettings.groovy
 
b/grails-data-hibernate5/core/src/main/groovy/org/grails/orm/hibernate/connections/HibernateConnectionSourceSettings.groovy
index 0c9aab26a2..c73119fe77 100644
--- 
a/grails-data-hibernate5/core/src/main/groovy/org/grails/orm/hibernate/connections/HibernateConnectionSourceSettings.groovy
+++ 
b/grails-data-hibernate5/core/src/main/groovy/org/grails/orm/hibernate/connections/HibernateConnectionSourceSettings.groovy
@@ -256,7 +256,7 @@ class HibernateConnectionSourceSettings extends 
ConnectionSourceSettings {
                     AvailableSettings.getField('ACQUIRE_CONNECTIONS')
                     props.put('hibernate.connection.release_mode', 'ON_CLOSE')
                 }
-                catch (NoSuchFieldException ex2) {
+                catch (NoSuchFieldException ignored) {
                     // on Hibernate 5.0.x or lower - no need to change the 
default there
                 }
             }
diff --git 
a/grails-data-hibernate5/core/src/main/groovy/org/grails/orm/hibernate/support/HibernateRuntimeUtils.groovy
 
b/grails-data-hibernate5/core/src/main/groovy/org/grails/orm/hibernate/support/HibernateRuntimeUtils.groovy
index 43cd4a5add..9459874c5c 100644
--- 
a/grails-data-hibernate5/core/src/main/groovy/org/grails/orm/hibernate/support/HibernateRuntimeUtils.groovy
+++ 
b/grails-data-hibernate5/core/src/main/groovy/org/grails/orm/hibernate/support/HibernateRuntimeUtils.groovy
@@ -170,7 +170,7 @@ class HibernateRuntimeUtils {
                 } else {
                     value = conversionService.convert(value, targetType)
                 }
-            } catch (e) {
+            } catch (ignored) {
                 // ignore
             }
         }
diff --git 
a/grails-data-mongodb/core/src/main/groovy/org/grails/datastore/gorm/mongo/simple/EnumType.groovy
 
b/grails-data-mongodb/core/src/main/groovy/org/grails/datastore/gorm/mongo/simple/EnumType.groovy
index af13893bed..51944cba72 100644
--- 
a/grails-data-mongodb/core/src/main/groovy/org/grails/datastore/gorm/mongo/simple/EnumType.groovy
+++ 
b/grails-data-mongodb/core/src/main/groovy/org/grails/datastore/gorm/mongo/simple/EnumType.groovy
@@ -98,7 +98,7 @@ class EnumType extends 
AbstractMappingAwareCustomTypeMarshaller<Object, Document
         try {
             Object values = type.getMethod('values').invoke(type)
             return Array.get(values, value.intValue())
-        } catch (Exception e) {
+        } catch (Exception ignored) {
             // ignore
         }
         return value
diff --git 
a/grails-databinding-core/src/main/groovy/grails/databinding/SimpleDataBinder.groovy
 
b/grails-databinding-core/src/main/groovy/grails/databinding/SimpleDataBinder.groovy
index 3f3ed13bae..e0049ed6be 100755
--- 
a/grails-databinding-core/src/main/groovy/grails/databinding/SimpleDataBinder.groovy
+++ 
b/grails-databinding-core/src/main/groovy/grails/databinding/SimpleDataBinder.groovy
@@ -605,7 +605,9 @@ class SimpleDataBinder implements DataBinder {
     protected convertStringToEnum(Class<? extends Enum> enumClass, String 
value) {
         try {
             enumClass.valueOf(value)
-        } catch (IllegalArgumentException iae) {}
+        } catch (IllegalArgumentException ignored) {
+            // intentional: an unmatched value cannot be converted to the enum
+        }
     }
 
     protected preprocessValue(propertyValue) {
@@ -781,7 +783,7 @@ class SimpleDataBinder implements DataBinder {
                     }
                 }
             }
-        } catch (Exception e) {
+        } catch (Exception ignored) {
         }
         initializer
     }
diff --git 
a/grails-datamapping-core/src/main/groovy/org/grails/compiler/gorm/GormEntityTransformation.groovy
 
b/grails-datamapping-core/src/main/groovy/org/grails/compiler/gorm/GormEntityTransformation.groovy
index 6a38b25322..a4b617aaea 100644
--- 
a/grails-datamapping-core/src/main/groovy/org/grails/compiler/gorm/GormEntityTransformation.groovy
+++ 
b/grails-datamapping-core/src/main/groovy/org/grails/compiler/gorm/GormEntityTransformation.groovy
@@ -184,7 +184,7 @@ class GormEntityTransformation extends 
AbstractASTTransformation implements Comp
                 try {
                     def cl = Thread.currentThread().contextClassLoader
                     AstUtils.addAnnotationIfNecessary(classNode, (Class<? 
extends Annotation>) Class.forName('grails.persistence.Entity', true, cl))
-                } catch (Throwable e2) {
+                } catch (Throwable ignored) {
                     // Only GORM classes on the classpath continue
                 }
             }
diff --git 
a/grails-datamapping-core/src/main/groovy/org/grails/datastore/gorm/bootstrap/AbstractDatastoreInitializer.groovy
 
b/grails-datamapping-core/src/main/groovy/org/grails/datastore/gorm/bootstrap/AbstractDatastoreInitializer.groovy
index 5655eebb7e..6c023cd26e 100644
--- 
a/grails-datamapping-core/src/main/groovy/org/grails/datastore/gorm/bootstrap/AbstractDatastoreInitializer.groovy
+++ 
b/grails-datamapping-core/src/main/groovy/org/grails/datastore/gorm/bootstrap/AbstractDatastoreInitializer.groovy
@@ -207,7 +207,7 @@ abstract class AbstractDatastoreInitializer implements 
ResourceLoaderAware {
             for (entityName in entityNames) {
                 try {
                     persistentClasses << classLoader.loadClass(entityName)
-                } catch (ClassNotFoundException e) {
+                } catch (ClassNotFoundException ignored) {
                     // ignore
                 }
             }
diff --git 
a/grails-datamapping-tck/src/main/groovy/org/apache/grails/data/testing/tck/tests/DomainEventsSpec.groovy
 
b/grails-datamapping-tck/src/main/groovy/org/apache/grails/data/testing/tck/tests/DomainEventsSpec.groovy
index 171031b57b..1da4710e8c 100644
--- 
a/grails-datamapping-tck/src/main/groovy/org/apache/grails/data/testing/tck/tests/DomainEventsSpec.groovy
+++ 
b/grails-datamapping-tck/src/main/groovy/org/apache/grails/data/testing/tck/tests/DomainEventsSpec.groovy
@@ -66,7 +66,7 @@ class DomainEventsSpec extends GrailsDataTckSpec {
         try {
             p.save()
             manager.session.flush()
-        } catch (e) {
+        } catch (ignored) {
             // ignore hibernate related flush errors
         }
         manager.session.clear()
diff --git 
a/grails-datasource/src/main/groovy/org/grails/plugins/datasource/EmbeddedDatabaseShutdownHook.groovy
 
b/grails-datasource/src/main/groovy/org/grails/plugins/datasource/EmbeddedDatabaseShutdownHook.groovy
index 9ef179427a..7184511cba 100644
--- 
a/grails-datasource/src/main/groovy/org/grails/plugins/datasource/EmbeddedDatabaseShutdownHook.groovy
+++ 
b/grails-datasource/src/main/groovy/org/grails/plugins/datasource/EmbeddedDatabaseShutdownHook.groovy
@@ -118,7 +118,7 @@ class EmbeddedDatabaseShutdownHook implements 
SmartLifecycle, ApplicationContext
             try {
                 Sql sql = new Sql(connection)
                 sql.executeUpdate('SHUTDOWN')
-            } catch (e) {
+            } catch (ignored) {
                 // already closed, ignore
             } finally {
                 try { connection?.close() } catch (ignored) {}
diff --git 
a/grails-datastore-core/src/main/groovy/org/grails/datastore/mapping/reflect/AstUtils.groovy
 
b/grails-datastore-core/src/main/groovy/org/grails/datastore/mapping/reflect/AstUtils.groovy
index 1de1e7eb2e..dcfcf6ead2 100644
--- 
a/grails-datastore-core/src/main/groovy/org/grails/datastore/mapping/reflect/AstUtils.groovy
+++ 
b/grails-datastore-core/src/main/groovy/org/grails/datastore/mapping/reflect/AstUtils.groovy
@@ -438,7 +438,7 @@ class AstUtils {
                 if (isDomainClass(new File(filePath).toURI().toURL())) {
                     return true
                 }
-            } catch (MalformedURLException e) {
+            } catch (MalformedURLException ignored) {
                 // ignore
             }
         }
diff --git 
a/grails-fields/src/main/groovy/org/grails/scaffolding/model/DomainModelServiceImpl.groovy
 
b/grails-fields/src/main/groovy/org/grails/scaffolding/model/DomainModelServiceImpl.groovy
index bfe8173d4d..070c7e9b9a 100644
--- 
a/grails-fields/src/main/groovy/org/grails/scaffolding/model/DomainModelServiceImpl.groovy
+++ 
b/grails-fields/src/main/groovy/org/grails/scaffolding/model/DomainModelServiceImpl.groovy
@@ -56,7 +56,7 @@ class DomainModelServiceImpl implements DomainModelService {
     static {
         try {
             derivedMethod = Property.getMethod('isDerived', (Class<?>[]) null)
-        } catch (NoSuchMethodException | SecurityException e) {
+        } catch (NoSuchMethodException | SecurityException ignored) {
             // no-op
         }
     }
diff --git 
a/grails-gsp/core/src/main/groovy/org/grails/gsp/ModelRecordingGroovyPage.groovy
 
b/grails-gsp/core/src/main/groovy/org/grails/gsp/ModelRecordingGroovyPage.groovy
index e490e7d59e..908eec63a3 100644
--- 
a/grails-gsp/core/src/main/groovy/org/grails/gsp/ModelRecordingGroovyPage.groovy
+++ 
b/grails-gsp/core/src/main/groovy/org/grails/gsp/ModelRecordingGroovyPage.groovy
@@ -195,7 +195,7 @@ class ModelEntry {
                             if 
(defaultTypeClass.isAssignableFrom(fieldTypeClass)) {
                                 cleanedFieldType = defaultType
                             }
-                        } catch (e) {
+                        } catch (ignored) {
                             // ignore
                         }
                     }
diff --git 
a/grails-gsp/plugin/src/main/groovy/org/grails/plugins/web/taglib/FormTagLib.groovy
 
b/grails-gsp/plugin/src/main/groovy/org/grails/plugins/web/taglib/FormTagLib.groovy
index 34638b261f..149792c099 100644
--- 
a/grails-gsp/plugin/src/main/groovy/org/grails/plugins/web/taglib/FormTagLib.groovy
+++ 
b/grails-gsp/plugin/src/main/groovy/org/grails/plugins/web/taglib/FormTagLib.groovy
@@ -1199,7 +1199,7 @@ class FormTagLib implements ApplicationContextAware, 
InitializingBean, TagLibrar
                 value = conversionService.convert(value, keyClass)
                 selected = keyValue == value
             }
-            catch (e) {
+            catch (ignored) {
                 // ignore
             }
         }
diff --git 
a/grails-rest-transforms/src/main/groovy/org/grails/plugins/web/rest/plugin/RestResponderGrailsPlugin.groovy
 
b/grails-rest-transforms/src/main/groovy/org/grails/plugins/web/rest/plugin/RestResponderGrailsPlugin.groovy
index 7cb2e665f3..c0ffd5efad 100644
--- 
a/grails-rest-transforms/src/main/groovy/org/grails/plugins/web/rest/plugin/RestResponderGrailsPlugin.groovy
+++ 
b/grails-rest-transforms/src/main/groovy/org/grails/plugins/web/rest/plugin/RestResponderGrailsPlugin.groovy
@@ -75,7 +75,7 @@ class RestResponderGrailsPlugin extends Plugin {
                 if (!app.getArtefact(ControllerArtefactHandler.TYPE, 
controllerClassName)) {
                     try {
                         app.addArtefact(ControllerArtefactHandler.TYPE, 
app.classLoader.loadClass(controllerClassName))
-                    } catch (ClassNotFoundException cnfe) {
+                    } catch (ClassNotFoundException ignored) {
 
                     }
                 }
diff --git a/grails-shell-cli/src/main/groovy/org/grails/cli/GrailsCli.groovy 
b/grails-shell-cli/src/main/groovy/org/grails/cli/GrailsCli.groovy
index 1d4ce96fc1..32af2027e6 100644
--- a/grails-shell-cli/src/main/groovy/org/grails/cli/GrailsCli.groovy
+++ b/grails-shell-cli/src/main/groovy/org/grails/cli/GrailsCli.groovy
@@ -108,11 +108,11 @@ class GrailsCli {
                         Thread.start {
                             currentExecutionContext?.cancel()
                         }.join(1000)
-                    } catch (Throwable e) {
+                    } catch (Throwable ignored) {
                         // ignore
                     }
                 }
-            } catch (e) {
+            } catch (ignored) {
                 // ignore
             }
         }
@@ -557,7 +557,7 @@ class GrailsCli {
                 try {
                     // add tools.jar
                     urls.add(new 
File("${System.getenv('JAVA_HOME')}/lib/tools.jar").toURI().toURL())
-                } catch (Throwable e) {
+                } catch (Throwable ignored) {
                     // ignore
                 }
                 def profiles = (List<URL>) dependencyMap.get('profiles')
@@ -660,7 +660,7 @@ class GrailsCli {
         keepRunning = false
         try {
             GradleAsyncInvoker.POOL.shutdownNow()
-        } catch (Throwable e) {
+        } catch (Throwable ignored) {
             // ignore
         }
     }
diff --git 
a/grails-shell-cli/src/main/groovy/org/grails/cli/gradle/GradleAsyncInvoker.groovy
 
b/grails-shell-cli/src/main/groovy/org/grails/cli/gradle/GradleAsyncInvoker.groovy
index f4b2e7b84a..012fada81e 100644
--- 
a/grails-shell-cli/src/main/groovy/org/grails/cli/gradle/GradleAsyncInvoker.groovy
+++ 
b/grails-shell-cli/src/main/groovy/org/grails/cli/gradle/GradleAsyncInvoker.groovy
@@ -42,7 +42,7 @@ class GradleAsyncInvoker {
                         POOL.shutdownNow()
                     }
                 }.join(1000)
-            } catch (Throwable e) {
+            } catch (Throwable ignored) {
                 // ignore
             }
         }
diff --git 
a/grails-shell-cli/src/main/groovy/org/grails/cli/gradle/cache/CachedGradleOperation.groovy
 
b/grails-shell-cli/src/main/groovy/org/grails/cli/gradle/cache/CachedGradleOperation.groovy
index 6a1ba0d3b2..d8afcea279 100644
--- 
a/grails-shell-cli/src/main/groovy/org/grails/cli/gradle/cache/CachedGradleOperation.groovy
+++ 
b/grails-shell-cli/src/main/groovy/org/grails/cli/gradle/cache/CachedGradleOperation.groovy
@@ -94,7 +94,7 @@ abstract class CachedGradleOperation<T> implements 
Callable<T> {
             depsFile.withPrintWriter { PrintWriter writer ->
                 writeToCache(writer, data)
             }
-        } catch (Throwable e) {
+        } catch (Throwable ignored) {
             // ignore
         }
     }
diff --git 
a/grails-shell-cli/src/main/groovy/org/grails/cli/interactive/completers/ClassNameCompleter.groovy
 
b/grails-shell-cli/src/main/groovy/org/grails/cli/interactive/completers/ClassNameCompleter.groovy
index db1e1e4efc..a11ac6f7d4 100644
--- 
a/grails-shell-cli/src/main/groovy/org/grails/cli/interactive/completers/ClassNameCompleter.groovy
+++ 
b/grails-shell-cli/src/main/groovy/org/grails/cli/interactive/completers/ClassNameCompleter.groovy
@@ -91,7 +91,7 @@ class ClassNameCompleter extends StringsCompleter {
                 allStrings.addAll(strings)
             }
             setStrings(allStrings)
-        } catch (Throwable e) {
+        } catch (Throwable ignored) {
             // ignore
         }
     }
diff --git 
a/grails-shell-cli/src/main/groovy/org/grails/cli/profile/ProfileRepoConfig.groovy
 
b/grails-shell-cli/src/main/groovy/org/grails/cli/profile/ProfileRepoConfig.groovy
index b51c2a1540..5a77138954 100644
--- 
a/grails-shell-cli/src/main/groovy/org/grails/cli/profile/ProfileRepoConfig.groovy
+++ 
b/grails-shell-cli/src/main/groovy/org/grails/cli/profile/ProfileRepoConfig.groovy
@@ -74,7 +74,7 @@ class ProfileRepoConfig {
             if (uri.getScheme() != null) {
                 return repoUrl
             }
-        } catch (URISyntaxException e) {
+        } catch (URISyntaxException ignored) {
             // Not a valid URI, fall through to file conversion
         }
 
diff --git 
a/grails-shell-cli/src/main/groovy/org/grails/cli/profile/commands/CreateAppCommand.groovy
 
b/grails-shell-cli/src/main/groovy/org/grails/cli/profile/commands/CreateAppCommand.groovy
index be68b00263..5897fd1b9f 100644
--- 
a/grails-shell-cli/src/main/groovy/org/grails/cli/profile/commands/CreateAppCommand.groovy
+++ 
b/grails-shell-cli/src/main/groovy/org/grails/cli/profile/commands/CreateAppCommand.groovy
@@ -778,7 +778,7 @@ class CreateAppCommand extends ArgumentCompletingCommand 
implements ProfileRepos
     private void deleteDirectory(File directory) {
         try {
             directory?.deleteDir()
-        } catch (Throwable t) {
+        } catch (Throwable ignored) {
             // Ignore error deleting temporal directory
         }
     }
diff --git 
a/grails-shell-cli/src/main/groovy/org/grails/cli/profile/commands/DefaultMultiStepCommand.groovy
 
b/grails-shell-cli/src/main/groovy/org/grails/cli/profile/commands/DefaultMultiStepCommand.groovy
index 30f5d06e49..c9a4155634 100644
--- 
a/grails-shell-cli/src/main/groovy/org/grails/cli/profile/commands/DefaultMultiStepCommand.groovy
+++ 
b/grails-shell-cli/src/main/groovy/org/grails/cli/profile/commands/DefaultMultiStepCommand.groovy
@@ -67,7 +67,7 @@ class DefaultMultiStepCommand extends MultiStepCommand {
                                 if (completerClass) {
                                     try {
                                         this.description.completer = 
(Completer) 
Thread.currentThread().contextClassLoader.loadClass(completerClass.toString()).getDeclaredConstructor().newInstance()
-                                    } catch (e) {
+                                    } catch (ignored) {
                                         // ignore
                                     }
                                 }
diff --git 
a/grails-shell-cli/src/main/groovy/org/grails/cli/profile/commands/templates/TemplateRendererImpl.groovy
 
b/grails-shell-cli/src/main/groovy/org/grails/cli/profile/commands/templates/TemplateRendererImpl.groovy
index 4e8a03eedc..095baa6141 100644
--- 
a/grails-shell-cli/src/main/groovy/org/grails/cli/profile/commands/templates/TemplateRendererImpl.groovy
+++ 
b/grails-shell-cli/src/main/groovy/org/grails/cli/profile/commands/templates/TemplateRendererImpl.groovy
@@ -199,7 +199,7 @@ class TemplateRendererImpl implements TemplateRenderer, 
ProfileRepositoryAware {
                         } finally {
                             try {
                                 reader.close()
-                            } catch (e) {
+                            } catch (ignored) {
                                 // ignore
                             }
                         }
diff --git 
a/grails-testing-support-core/src/main/groovy/grails/testing/services/ServiceUnitTest.groovy
 
b/grails-testing-support-core/src/main/groovy/grails/testing/services/ServiceUnitTest.groovy
index 917c730505..19dcac8477 100755
--- 
a/grails-testing-support-core/src/main/groovy/grails/testing/services/ServiceUnitTest.groovy
+++ 
b/grails-testing-support-core/src/main/groovy/grails/testing/services/ServiceUnitTest.groovy
@@ -41,7 +41,7 @@ trait ServiceUnitTest<T> extends 
ParameterizedGrailsUnitTest<T> {
         if (!dataTestLoaded) {
             try {
                 dataTest = ClassUtils.forName(DATATEST_CLASS)
-            } catch (ClassNotFoundException e) {}
+            } catch (ClassNotFoundException ignored) {}
         }
         dataTestLoaded = true
     }
diff --git 
a/grails-testing-support-core/src/main/groovy/org/grails/compiler/injection/testing/IntegrationTestAstTransformation.groovy
 
b/grails-testing-support-core/src/main/groovy/org/grails/compiler/injection/testing/IntegrationTestAstTransformation.groovy
index 6034589837..cb75b84bd5 100644
--- 
a/grails-testing-support-core/src/main/groovy/org/grails/compiler/injection/testing/IntegrationTestAstTransformation.groovy
+++ 
b/grails-testing-support-core/src/main/groovy/org/grails/compiler/injection/testing/IntegrationTestAstTransformation.groovy
@@ -166,7 +166,7 @@ class IntegrationTestAstTransformation implements 
ASTTransformation, TransformWi
         try {
             servletApi = Class.forName('jakarta.servlet.ServletContext', 
false, getClass().classLoader)
         }
-        catch (Exception e) {
+        catch (Exception ignored) {
             // ignore
         }
 
diff --git 
a/grails-testing-support-core/src/main/groovy/org/grails/testing/GrailsUnitTest.groovy
 
b/grails-testing-support-core/src/main/groovy/org/grails/testing/GrailsUnitTest.groovy
index 7eb236cf63..1b72ef247e 100644
--- 
a/grails-testing-support-core/src/main/groovy/org/grails/testing/GrailsUnitTest.groovy
+++ 
b/grails-testing-support-core/src/main/groovy/org/grails/testing/GrailsUnitTest.groovy
@@ -116,12 +116,12 @@ trait GrailsUnitTest {
                 defineBeans(config)
                 return
             }
-        } catch (NoSuchMethodException e) {}
+        } catch (NoSuchMethodException ignored) {}
 
         try {
             Method doWithSpringField = clazz.getMethod('getDoWithSpring')
             defineBeans((Closure) doWithSpringField.invoke(plugin))
-        } catch (NoSuchMethodException e) {}
+        } catch (NoSuchMethodException ignored) {}
     }
 
     Closure doWithSpring() {
diff --git 
a/grails-testing-support-web/src/main/groovy/org/grails/testing/spock/WebSetupSpecInterceptor.groovy
 
b/grails-testing-support-web/src/main/groovy/org/grails/testing/spock/WebSetupSpecInterceptor.groovy
index cf886fa46f..aedf55f4ed 100644
--- 
a/grails-testing-support-web/src/main/groovy/org/grails/testing/spock/WebSetupSpecInterceptor.groovy
+++ 
b/grails-testing-support-web/src/main/groovy/org/grails/testing/spock/WebSetupSpecInterceptor.groovy
@@ -116,7 +116,7 @@ class WebSetupSpecInterceptor implements IMethodInterceptor 
{
             try {
                 Class viewResolver = 
classLoader.loadClass('grails.plugin.json.view.mvc.JsonViewResolver')
                 jsonSmartViewResolver(viewResolver)
-            } catch (ClassNotFoundException e) { }
+            } catch (ClassNotFoundException ignored) { }
 
             localeResolver(SessionLocaleResolver)
             multipartResolver(StandardServletMultipartResolver)
diff --git 
a/grails-views-core/src/main/groovy/grails/views/resolve/GenericGroovyTemplateResolver.groovy
 
b/grails-views-core/src/main/groovy/grails/views/resolve/GenericGroovyTemplateResolver.groovy
index c990ea0a8f..74dcfe9c31 100644
--- 
a/grails-views-core/src/main/groovy/grails/views/resolve/GenericGroovyTemplateResolver.groovy
+++ 
b/grails-views-core/src/main/groovy/grails/views/resolve/GenericGroovyTemplateResolver.groovy
@@ -78,7 +78,7 @@ class GenericGroovyTemplateResolver implements 
TemplateResolver {
             log.trace('Attempting to load class [{}] for template [{}]', 
className, path)
             def cls = classLoader.loadClass(className)
             return (Class<? extends Template>) cls
-        } catch (Throwable e) {
+        } catch (Throwable ignored) {
         }
         return null
     }
diff --git 
a/grails-web-databinding/src/main/groovy/grails/web/databinding/GrailsWebDataBinder.groovy
 
b/grails-web-databinding/src/main/groovy/grails/web/databinding/GrailsWebDataBinder.groovy
index 841a33fd22..80a87452dd 100644
--- 
a/grails-web-databinding/src/main/groovy/grails/web/databinding/GrailsWebDataBinder.groovy
+++ 
b/grails-web-databinding/src/main/groovy/grails/web/databinding/GrailsWebDataBinder.groovy
@@ -265,7 +265,7 @@ class GrailsWebDataBinder extends SimpleDataBinder {
     protected getPersistentInstance(Class<?> type, id) {
         try {
             InvokerHelper.invokeStaticMethod(type, 'get', id)
-        } catch (Exception exc) {}
+        } catch (Exception ignored) {}
     }
 
     /**
@@ -731,7 +731,7 @@ class GrailsWebDataBinder extends SimpleDataBinder {
         if (grailsApplication != null) {
             try {
                 return 
grailsApplication.mappingContext.getPersistentEntity(clazz.name)
-            } catch (GrailsConfigurationException e) {
+            } catch (GrailsConfigurationException ignored) {
                 //no-op
             }
         }
diff --git 
a/grails-web-url-mappings/src/main/groovy/org/grails/web/mapping/DefaultLinkGenerator.groovy
 
b/grails-web-url-mappings/src/main/groovy/org/grails/web/mapping/DefaultLinkGenerator.groovy
index cb161d4177..df8551abb5 100644
--- 
a/grails-web-url-mappings/src/main/groovy/org/grails/web/mapping/DefaultLinkGenerator.groovy
+++ 
b/grails-web-url-mappings/src/main/groovy/org/grails/web/mapping/DefaultLinkGenerator.groovy
@@ -438,7 +438,9 @@ class DefaultLinkGenerator implements LinkGenerator, 
PluginManagerAware {
                     if (str) {
                         absolute = Boolean.parseBoolean(str)
                     }
-                } catch (e) {}
+                } catch (e) {
+                    log.debug('Unable to parse absolute link attribute', e)
+                }
             }
         }
         return absolute


Reply via email to