Do not crash testing scripts if a test requests a bad URI

Bug: https://github.com/dart-lang/sdk/issues/34347
Change-Id: I505479fcb224332a79dc7e77eab723316d18b3f3
Reviewed-on: https://dart-review.googlesource.com/72684
Reviewed-by: Alexander Thomas <athom@google.com>
Commit-Queue: William Hesse <whesse@google.com>
diff --git a/tools/testing/dart/http_server.dart b/tools/testing/dart/http_server.dart
index 34032e7..ea8f3c3 100644
--- a/tools/testing/dart/http_server.dart
+++ b/tools/testing/dart/http_server.dart
@@ -10,8 +10,8 @@
 
 import 'configuration.dart';
 import 'repository.dart';
-import 'vendored_pkg/args/args.dart';
 import 'utils.dart';
+import 'vendored_pkg/args/args.dart';
 
 class DispatchingServer {
   HttpServer server;
@@ -156,8 +156,11 @@
   }
 
   String get network => _serverList[0].address.address;
+
   int get port => _serverList[0].port;
+
   int get crossOriginPort => _serverList[1].port;
+
   DispatchingServer get server => _server;
 
   /**
@@ -246,29 +249,33 @@
     var response = request.response;
     response.headers
         .set("Cache-Control", "max-age=$_CACHE_EXPIRATION_IN_SECONDS");
-    var path = _getFileUriFromRequestUri(request.uri);
-    if (path != null) {
-      var file = new File.fromUri(path);
-      var directory = new Directory.fromUri(path);
-      if (await file.exists()) {
-        _sendFileContent(request, response, allowedPort, file);
-      } else if (await directory.exists()) {
-        _sendDirectoryListing(
-            await _listDirectory(directory), request, response);
+    try {
+      var path = _getFileUriFromRequestUri(request.uri);
+      if (path != null) {
+        var file = new File.fromUri(path);
+        var directory = new Directory.fromUri(path);
+        if (await file.exists()) {
+          _sendFileContent(request, response, allowedPort, file);
+        } else if (await directory.exists()) {
+          _sendDirectoryListing(
+              await _listDirectory(directory), request, response);
+        } else {
+          _sendNotFound(request);
+        }
       } else {
-        _sendNotFound(request);
+        if (request.uri.path == '/') {
+          var entries = [
+            new _Entry('root_dart', 'root_dart/'),
+            new _Entry('root_build', 'root_build/'),
+            new _Entry('echo', 'echo')
+          ];
+          _sendDirectoryListing(entries, request, response);
+        } else {
+          _sendNotFound(request);
+        }
       }
-    } else {
-      if (request.uri.path == '/') {
-        var entries = [
-          new _Entry('root_dart', 'root_dart/'),
-          new _Entry('root_build', 'root_build/'),
-          new _Entry('echo', 'echo')
-        ];
-        _sendDirectoryListing(entries, request, response);
-      } else {
-        _sendNotFound(request);
-      }
+    } catch (e) {
+      _sendNotFound(request);
     }
   }