Dont print exceptions thrown by getExecutableForCommand (#4377)

diff --git a/lib/src/entrypoint.dart b/lib/src/entrypoint.dart
index dce2e52..f57aeb9 100644
--- a/lib/src/entrypoint.dart
+++ b/lib/src/entrypoint.dart
@@ -678,13 +678,11 @@
   }) async {
     await log.progress('Building package executable', () async {
       ensureDir(p.dirname(pathOfSnapshot(executable)));
-      return waitAndPrintErrors([
-        _precompileExecutable(
-          executable,
-          additionalSources: additionalSources,
-          nativeAssets: nativeAssets,
-        ),
-      ]);
+      return await _precompileExecutable(
+        executable,
+        additionalSources: additionalSources,
+        nativeAssets: nativeAssets,
+      );
     });
   }
 
diff --git a/pubspec.lock b/pubspec.lock
index 5051dfb..e20fe4d 100644
--- a/pubspec.lock
+++ b/pubspec.lock
@@ -5,23 +5,23 @@
     dependency: transitive
     description:
       name: _fe_analyzer_shared
-      sha256: "45cfa8471b89fb6643fe9bf51bd7931a76b8f5ec2d65de4fb176dba8d4f22c77"
+      sha256: f6dbf021f4b214d85c79822912c5fcd142a2c4869f01222ad371bc51f9f1c356
       url: "https://pub.dev"
     source: hosted
-    version: "73.0.0"
+    version: "74.0.0"
   _macros:
     dependency: transitive
     description: dart
     source: sdk
-    version: "0.3.2"
+    version: "0.3.3"
   analyzer:
     dependency: "direct main"
     description:
       name: analyzer
-      sha256: "4959fec185fe70cce007c57e9ab6983101dbe593d2bf8bbfb4453aaec0cf470a"
+      sha256: f7e8caf82f2d3190881d81012606effdf8a38e6c1ab9e30947149733065f817c
       url: "https://pub.dev"
     source: hosted
-    version: "6.8.0"
+    version: "6.9.0"
   args:
     dependency: "direct main"
     description:
@@ -194,10 +194,10 @@
     dependency: transitive
     description:
       name: macros
-      sha256: "0acaed5d6b7eab89f63350bccd82119e6c602df0f391260d0e32b5e23db79536"
+      sha256: "1d9e801cd66f7ea3663c45fc708450db1fa57f988142c64289142c9b7ee80656"
       url: "https://pub.dev"
     source: hosted
-    version: "0.1.2-main.4"
+    version: "0.1.3-main.0"
   matcher:
     dependency: transitive
     description:
diff --git a/test/embedding/embedding_test.dart b/test/embedding/embedding_test.dart
index faeb17d..388768c 100644
--- a/test/embedding/embedding_test.dart
+++ b/test/embedding/embedding_test.dart
@@ -222,6 +222,20 @@
     );
   });
 
+  testWithGolden('Compilation errors are only printed once', (context) async {
+    await servePackages();
+    await d.dir(appPath, [
+      d.appPubspec(),
+      d.dir('bin', [d.file('syntax_error.dart', 'main() => print("hi")')]),
+    ]).create();
+    await context.runEmbedding(
+      ['run', ':syntax_error'],
+      environment: getPubTestEnvironment(),
+      workingDirectory: d.path(appPath),
+      exitCode: isNot(0),
+    );
+  });
+
   test('`embedding run` does `pub get` if sdk updated', () async {
     await d.dir(appPath, [
       d.pubspec({
diff --git a/test/testdata/goldens/embedding/embedding_test/Compilation errors are only printed once.txt b/test/testdata/goldens/embedding/embedding_test/Compilation errors are only printed once.txt
new file mode 100644
index 0000000..80db252
--- /dev/null
+++ b/test/testdata/goldens/embedding/embedding_test/Compilation errors are only printed once.txt
@@ -0,0 +1,11 @@
+# GENERATED BY: test/embedding/embedding_test.dart
+
+$ tool/test-bin/pub_command_runner.dart run :syntax_error
+[E] Failed to build myapp:syntax_error:
+[E] bin/syntax_error.dart:1:21: Error: Expected ';' after this.
+[E] main() => print("hi")
+[E]    ^
+[E] bin/syntax_error.dart:1:22: Error: Unexpected token ''.
+[E] main() => print("hi")
+[E]    ^...
+
diff --git a/tool/test-bin/pub_command_runner.dart b/tool/test-bin/pub_command_runner.dart
index 2665a7b..ec420af 100644
--- a/tool/test-bin/pub_command_runner.dart
+++ b/tool/test-bin/pub_command_runner.dart
@@ -91,7 +91,13 @@
 
   @override
   Future<int> run() async {
-    final executable = await getExecutableForCommand(argResults!.rest.first);
+    final DartExecutableWithPackageConfig executable;
+    try {
+      executable = await getExecutableForCommand(argResults!.rest.first);
+    } on CommandResolutionFailedException catch (e) {
+      log.error(e.message);
+      return -1;
+    }
     final packageConfig = executable.packageConfig;
     final process = await Process.start(
       Platform.executable,