diff --git a/cabal-install/Distribution/Client/HttpUtils.hs b/cabal-install/Distribution/Client/HttpUtils.hs
index 51fae37e3379742a63b2fac9b42fbeb9476dd28f..0886e7be94481d7f64b6f4144ae1bcdbb21bd391 100644
--- a/cabal-install/Distribution/Client/HttpUtils.hs
+++ b/cabal-install/Distribution/Client/HttpUtils.hs
@@ -21,8 +21,10 @@ import Network.Browser
          , setOutHandler, setErrHandler, setProxy, setAuthorityGen, request)
 import Network.Stream
          ( Result, ConnError(..) )
+import Control.Exception
+         ( handleJust )
 import Control.Monad
-         ( liftM )
+         ( liftM, guard )
 import qualified Data.ByteString.Lazy.Char8 as ByteString
 import Data.ByteString.Lazy (ByteString)
 
@@ -42,6 +44,8 @@ import System.FilePath
          ( (<.>) )
 import System.Directory
          ( doesFileExist )
+import System.IO.Error
+         ( isDoesNotExistError )
 
 data DownloadResult = FileAlreadyInCache | FileDownloaded FilePath deriving (Eq)
 
@@ -88,13 +92,16 @@ cabalBrowse :: Verbosity
             -> IO a
 cabalBrowse verbosity auth act = do
     p   <- proxy verbosity
-    browse $ do
-        setProxy p
-        setErrHandler (warn verbosity . ("http error: "++))
-        setOutHandler (debug verbosity)
-        auth
-        setAuthorityGen (\_ _ -> return Nothing)
-        act
+    handleJust
+        (guard . isDoesNotExistError)
+        (const $ die "Cannot connect to uri. Is http_proxy set?") $
+        browse $ do
+            setProxy p
+            setErrHandler (warn verbosity . ("http error: "++))
+            setOutHandler (debug verbosity)
+            auth
+            setAuthorityGen (\_ _ -> return Nothing)
+            act
 
 downloadURI :: Verbosity
             -> URI      -- ^ What to download