diff --git a/bin/internal/engine.version b/bin/internal/engine.version
index 6f23bd0..6ec30b3 100644
--- a/bin/internal/engine.version
+++ b/bin/internal/engine.version
@@ -1 +1 @@
-bb08b06d137a329ed1fa63471d7209c313ebd196
+fee001c93f25a1e7258e762781a7361f122d29f5
diff --git a/packages/flutter_tools/lib/src/project.dart b/packages/flutter_tools/lib/src/project.dart
index ef4a38d..16f5f0c 100644
--- a/packages/flutter_tools/lib/src/project.dart
+++ b/packages/flutter_tools/lib/src/project.dart
@@ -15,6 +15,7 @@
 import 'cache.dart';
 import 'desktop.dart';
 import 'flutter_manifest.dart';
+import 'globals.dart';
 import 'ios/ios_workflow.dart';
 import 'ios/plist_utils.dart' as plist;
 import 'ios/xcodeproj.dart' as xcode;
@@ -164,9 +165,16 @@
   /// Completes with an empty [FlutterManifest], if the file does not exist.
   /// Completes with a ToolExit on validation error.
   static FlutterManifest _readManifest(String path) {
-    final FlutterManifest manifest = FlutterManifest.createFromPath(path);
-    if (manifest == null)
+    FlutterManifest manifest;
+    try {
+      manifest = FlutterManifest.createFromPath(path);
+    } on YamlException catch (e) {
+      printStatus('Error detected in pubspec.yaml:', emphasis: true);
+      printError('$e');
+    }
+    if (manifest == null) {
       throwToolExit('Please correct the pubspec.yaml file at $path');
+    }
     return manifest;
   }
 
diff --git a/packages/flutter_tools/test/project_test.dart b/packages/flutter_tools/test/project_test.dart
index 6273421..a5f23e0 100644
--- a/packages/flutter_tools/test/project_test.dart
+++ b/packages/flutter_tools/test/project_test.dart
@@ -40,7 +40,19 @@
 
         expect(
           () => FlutterProject.fromDirectory(directory),
-          throwsA(isInstanceOf<Exception>()),
+          throwsA(isInstanceOf<ToolExit>()),
+        );
+      });
+
+      testInMemory('fails on pubspec.yaml parse failure', () async {
+        final Directory directory = fs.directory('myproject');
+        directory.childFile('pubspec.yaml')
+          ..createSync(recursive: true)
+          ..writeAsStringSync(parseErrorPubspec);
+
+        expect(
+          () => FlutterProject.fromDirectory(directory),
+          throwsA(isInstanceOf<ToolExit>()),
         );
       });
 
@@ -52,7 +64,7 @@
 
         expect(
           () => FlutterProject.fromDirectory(directory),
-          throwsA(isInstanceOf<Exception>()),
+          throwsA(isInstanceOf<ToolExit>()),
         );
       });
 
@@ -575,6 +587,14 @@
   invalid:
 ''';
 
+String get parseErrorPubspec => '''
+name: hello
+# Whitespace is important.
+flutter:
+    something:
+  something_else:
+''';
+
 String projectFileWithBundleId(String id, {String qualifier}) {
   return '''
 97C147061CF9000F007C117D /* Debug */ = {
