diff --git a/pkg/analyzer_fe_comparison/lib/comparison.dart b/pkg/analyzer_fe_comparison/lib/comparison.dart
index fe3f57e..461c11b 100644
--- a/pkg/analyzer_fe_comparison/lib/comparison.dart
+++ b/pkg/analyzer_fe_comparison/lib/comparison.dart
@@ -36,6 +36,15 @@
       packagesFileUri,
       platformUri,
       (uri) => uri.scheme == 'file');
+  if (kernelNode.text == 'Error occurred') {
+    // TODO(paulberry): really we should verify that the analyzer detects an
+    // error as well.  But that's not easy to do right now because we use the
+    // front end to chase imports so that we know which files to pass to the
+    // analyzer, and we can't rely on the front end import chasing when an error
+    // occurred.
+    print('No differences found (skipped due to front end compilation error)');
+    return;
+  }
   String startingPath;
   var inputs = <String>[];
   for (var library in kernelNode.children) {
@@ -52,7 +61,7 @@
   ComparisonNode analyzerNode =
       await analyzer.analyzeFiles(startingPath, inputs);
   var diff = ComparisonNode.diff(kernelNode, analyzerNode);
-  if (diff.children.isEmpty) {
+  if (diff.children.isEmpty && diff.text.startsWith('=')) {
     print('No differences found!');
   } else {
     print('Differences found:');
diff --git a/pkg/analyzer_fe_comparison/lib/src/kernel.dart b/pkg/analyzer_fe_comparison/lib/src/kernel.dart
index d9d8c89..0263600 100644
--- a/pkg/analyzer_fe_comparison/lib/src/kernel.dart
+++ b/pkg/analyzer_fe_comparison/lib/src/kernel.dart
@@ -15,8 +15,15 @@
 /// [ComparisonNode] representing them.
 Future<ComparisonNode> analyzePackage(
     List<Uri> inputs, Uri packagesFileUri, Uri platformUri) async {
+  bool errorOccurred = false;
   var component = await kernelForComponent(
-      inputs, _makeCompilerOptions(packagesFileUri, platformUri));
+      inputs,
+      _makeCompilerOptions(packagesFileUri, platformUri, (_) {
+        errorOccurred = true;
+      }));
+  if (errorOccurred) {
+    return ComparisonNode('Error occurred');
+  }
   var libraryNodes = <ComparisonNode>[];
   var visitor = _KernelVisitor(libraryNodes);
   for (var library in component.libraries) {
@@ -33,8 +40,15 @@
 /// Only libraries whose URI passes the [uriFilter] are included in the results.
 Future<ComparisonNode> analyzeProgram(Uri input, Uri packagesFileUri,
     Uri platformUri, bool uriFilter(Uri uri)) async {
+  var errorOccurred = false;
   var component = await kernelForProgram(
-      input, _makeCompilerOptions(packagesFileUri, platformUri));
+      input,
+      _makeCompilerOptions(packagesFileUri, platformUri, (_) {
+        errorOccurred = true;
+      }));
+  if (errorOccurred) {
+    return ComparisonNode('Error occurred');
+  }
   var libraryNodes = <ComparisonNode>[];
   var visitor = _KernelVisitor(libraryNodes);
   for (var library in component.libraries) {
@@ -45,7 +59,8 @@
   return ComparisonNode.sorted('Component', libraryNodes);
 }
 
-CompilerOptions _makeCompilerOptions(Uri packagesFileUri, Uri platformUri) {
+CompilerOptions _makeCompilerOptions(
+    Uri packagesFileUri, Uri platformUri, ErrorHandler onError) {
   var targetFlags = TargetFlags(strongMode: true, syncAsync: true);
   var target = NoneTarget(targetFlags);
   var fileSystem = StandardFileSystem.instance;
@@ -57,7 +72,8 @@
     ..strongMode = true
     ..target = target
     ..throwOnErrorsForDebugging = false
-    ..embedSourceText = false;
+    ..embedSourceText = false
+    ..onError = onError;
 }
 
 /// Visitor for serializing a kernel representation of a program into
