Make `debugger` fail nicely when mojo:debugger is unreachable.

Also, make it properly return the exit code.

Fixes domokit/devtools#15.

R=qsr@chromium.org

Review URL: https://codereview.chromium.org/1174223005.

Cr-Mirrored-From: https://github.com/domokit/mojo
Cr-Mirrored-Commit: 5d1be12199823fa00ae9123a7da1da6788bba962
diff --git a/debugger b/debugger
index 6bca9fb..9725183 100755
--- a/debugger
+++ b/debugger
@@ -13,14 +13,20 @@
 
 def _send_request(request):
   """Sends a request to mojo:debugger."""
-  url = 'http://localhost:%s/%s' % (_MOJO_DEBUGGER_PORT, request)
-  return requests.get(url)
+  try:
+    url = 'http://localhost:%s/%s' % (_MOJO_DEBUGGER_PORT, request)
+    return requests.get(url)
+  except requests.exceptions.ConnectionError:
+    print 'Failed to connect to mojo:debugger, make sure the shell is running.'
+    return None
 
 
 def _tracing_start(_):
   """Starts tracing."""
-  _send_request('start_tracing')
+  if not _send_request('start_tracing'):
+    return 1
   print "Started tracing."
+  return 0
 
 
 def _tracing_stop(args):
@@ -37,12 +43,16 @@
       print 'Failed to pick a name for the trace output file.'
       return 1
 
-  trace = _send_request('stop_tracing').content
+  response = _send_request('stop_tracing')
+  if not response:
+    return 1
+
   with open(file_name, "wb") as trace_file:
     trace_file.write('{"traceEvents":[')
-    trace_file.write(trace)
+    trace_file.write(response.content)
     trace_file.write(']}')
   print "Trace saved in %s" % file_name
+  return 0
 
 
 def _add_tracing_command(subparsers):
@@ -70,8 +80,7 @@
   _add_tracing_command(subparsers)
 
   args = parser.parse_args()
-  args.func(args)
-  return 0
+  return args.func(args)
 
 if __name__ == '__main__':
   sys.exit(main())