Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/387.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用try-catch跳过异常会导致陷入无限循环_Java_Exception_Exception Handling_Httpurlconnection_Connection Timeout - Fatal编程技术网

Java 使用try-catch跳过异常会导致陷入无限循环

Java 使用try-catch跳过异常会导致陷入无限循环,java,exception,exception-handling,httpurlconnection,connection-timeout,Java,Exception,Exception Handling,Httpurlconnection,Connection Timeout,对于某些URL,BufferedReader达到连接超时,并抛出一个中断整个程序的异常,这是我遇到的困难。我需要的是检查连接打开所花费的时间,如果它达到阈值(必须小于超时值),它将跳过该URL打开流,然后获取下一个URL,或者它以不会导致程序停止的方式处理超时。你知道怎么做吗 URL url = new URL(line); URLConnection connection = url.openConnection(); if (connection instanceof HttpURLConn

对于某些URL,
BufferedReader
达到连接超时,并抛出一个中断整个程序的异常,这是我遇到的困难。我需要的是检查连接打开所花费的时间,如果它达到阈值(必须小于超时值),它将跳过该URL打开流,然后获取下一个URL,或者它以不会导致程序停止的方式处理超时。你知道怎么做吗

URL url = new URL(line);
URLConnection connection = url.openConnection();
if (connection instanceof HttpURLConnection) {
HttpURLConnection httpConn = (HttpURLConnection) connection;
int statusCode = httpConn.getResponseCode();
if (statusCode <= 200 && statusCode < 300)
  try{                 
   BufferedReader brURL = new BufferedReader(new InputStreamReader(url.openStream()));    
   while((tempLine = brURL.readLine())!=null){                          
   UrlMatcher=UrlPattern.matcher(tempLine);
   java.util.logging.Logger.getLogger(SimpleCrawler.class.getName()).log(Level.SEVERE, tempLine);
           if(UrlMatcher.find())
            {
                String resultURL=UrlMatcher.group();
                fop.write(resultURL.toLowerCase().getBytes());
                fop.write(System.getProperty("line.separator").getBytes());

               System.out.println(resultURL);
          }


                                            }                
  }
                           catch(ConnectException ex){}

             }

您应该使用
setConnectTimeout
,然后捕获
SocketTimeoutException

try { 
HttpURLConnection con = (HttpURLConnection) new URL(url).openConnection();
 con.setConnectTimeout(5000); //set timeout to 5 seconds 
return (con.getResponseCode() == HttpURLConnection.HTTP_OK); 
} 
catch (java.net.SocketTimeoutException e) { return false; }

请看这里。

为什么不捕获异常?@VinceEmigh您的意思是使用try-catch?是的,捕获
ConnectionException
。如果抛出一个运行时expetion,如果您捕获它,它不会使线程崩溃it@VinceEmigh那怎么抓住它呢?我的意思是,在这种情况下,catch部分会是什么?是的,因为抛出了一个
ConnectException
,这就是您想要捕获的异常。它说
将返回类型更改为Boolean
,这样做,或者在连接超时时将
return false
更改为您需要的任何内容。@EJP如果我将其更改为Boolean,那么主线程必须是布尔类型,这是不可能的。@EJP此外,我已经提到了我在连接超时时想要的,只是跳过URL并从brURL获取下一个URL。我必须说他的回答根本不起作用,它仍然抛出异常并中断线程。然而,我的问题中上面的代码通过了这一点,但随后,我将陷入一个无限循环,我不知道为什么
继续,或任何您需要进入下一个URL的内容。您还没有发布代码的这一部分,期望其他人猜测可能需要什么是不合理的。
 rum-static.pingdom.net/prum.min.js //the last match
SEVERE: var flashvars = {};
Nov 27, 2015 6:53:27 PM simplecrawler.SimpleCrawler openConnection
SEVERE: flashvars.enableAPI = "true";
Nov 27, 2015 6:53:27 PM simplecrawler.SimpleCrawler openConnection
SEVERE: flashvars.galleryURL = "/svgallerysource.asp?galleryid=685";
Nov 27, 2015 6:53:27 PM simplecrawler.SimpleCrawler openConnection
SEVERE: var params = {};
Nov 27, 2015 6:53:27 PM simplecrawler.SimpleCrawler openConnection
SEVERE: params.bgcolor = "222222";
Nov 27, 2015 6:53:27 PM simplecrawler.SimpleCrawler openConnection
SEVERE: params.allowfullscreen = false;
Nov 27, 2015 6:53:27 PM simplecrawler.SimpleCrawler openConnection
SEVERE: params.allowscriptaccess = "always";
Nov 27, 2015 6:53:27 PM simplecrawler.SimpleCrawler openConnection
SEVERE: params.wmode = "transparent";
Nov 27, 2015 6:53:27 PM simplecrawler.SimpleCrawler openConnection
SEVERE: var attributes = {};
Nov 27, 2015 6:53:27 PM simplecrawler.SimpleCrawler openConnection
SEVERE: attributes.id =  "svInstance";
Nov 27, 2015 6:53:27 PM simplecrawler.SimpleCrawler openConnection
SEVERE: attributes.name = "svInstance";
Nov 27, 2015 6:53:27 PM simplecrawler.SimpleCrawler openConnection
SEVERE: simpleviewer.ready(function () {
Nov 27, 2015 6:53:27 PM simplecrawler.SimpleCrawler openConnection
SEVERE: simpleviewer.load('flashContent', '920', '420', '222222', true, flashvars, params, attributes, true); 
Nov 27, 2015 6:53:27 PM simplecrawler.SimpleCrawler openConnection
SEVERE: }); 
Nov 27, 2015 6:53:27 PM simplecrawler.SimpleCrawler openConnection
SEVERE: </script>
Nov 27, 2015 6:53:27 PM simplecrawler.SimpleCrawler openConnection
SEVERE: 
Nov 27, 2015 6:53:27 PM simplecrawler.SimpleCrawler openConnection
SEVERE: <link href="http://cdn-images.mailchimp.com/embedcode/slim-081711.css" rel="stylesheet" type="text/css">
Nov 27, 2015 6:53:27 PM simplecrawler.SimpleCrawler openConnection
SEVERE: <style type="text/css">
Nov 27, 2015 6:53:27 PM simplecrawler.SimpleCrawler openConnection
SEVERE:      #mc_embed_signup{background:#fff; clear:left; font:14px Helvetica,Arial,sans-serif; }
Nov 27, 2015 6:53:27 PM simplecrawler.SimpleCrawler openConnection
SEVERE:  </style>
Nov 27, 2015 6:53:27 PM simplecrawler.SimpleCrawler openConnection
SEVERE: 
Nov 27, 2015 6:53:27 PM simplecrawler.SimpleCrawler openConnection
SEVERE: 
Nov 27, 2015 6:53:27 PM simplecrawler.SimpleCrawler openConnection
SEVERE: 
Nov 27, 2015 6:53:27 PM simplecrawler.SimpleCrawler openConnection
SEVERE: <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
Nov 27, 2015 6:53:27 PM simplecrawler.SimpleCrawler openConnection
SEVERE: <script type="text/javascript" src="/jplayer/jquery.jplayer.min.js"></script>
Nov 27, 2015 6:53:27 PM simplecrawler.SimpleCrawler openConnection
SEVERE: <script type="text/javascript" src="/jplayer/jquery.jplayer.inspector.js"></script>
Nov 27, 2015 6:53:27 PM simplecrawler.SimpleCrawler openConnection
SEVERE: <link rel="stylesheet" href="/css/colorbox.css" />
Nov 27, 2015 6:53:27 PM simplecrawler.SimpleCrawler openConnection
SEVERE: 
Nov 27, 2015 6:53:27 PM simplecrawler.SimpleCrawler openConnection
SEVERE: 
Nov 27, 2015 6:53:27 PM simplecrawler.SimpleCrawler openConnection
SEVERE: <script>
Nov 27, 2015 6:53:27 PM simplecrawler.SimpleCrawler openConnection
SEVERE: var _prum = [['id', '5397955dabe53dbb3ea78d70'],
Nov 27, 2015 6:53:27 PM simplecrawler.SimpleCrawler openConnection
SEVERE:              ['mark', 'firstbyte', (new Date()).getTime()]];
Nov 27, 2015 6:53:27 PM simplecrawler.SimpleCrawler openConnection
SEVERE: (function() {
Nov 27, 2015 6:53:27 PM simplecrawler.SimpleCrawler openConnection
SEVERE:     var s = document.getElementsByTagName('script')[0]
Nov 27, 2015 6:53:27 PM simplecrawler.SimpleCrawler openConnection
SEVERE:       , p = document.createElement('script');
Nov 27, 2015 6:53:27 PM simplecrawler.SimpleCrawler openConnection
SEVERE:     p.async = 'async';
Nov 27, 2015 6:53:27 PM simplecrawler.SimpleCrawler openConnection
SEVERE:     p.src = '//rum-static.pingdom.net/prum.min.js';
Nov 27, 2015 6:53:27 PM simplecrawler.SimpleCrawler openConnection
SEVERE:     s.parentNode.insertBefore(p, s);
Nov 27, 2015 6:53:27 PM simplecrawler.SimpleCrawler openConnection
SEVERE: })();
Nov 27, 2015 6:53:27 PM simplecrawler.SimpleCrawler openConnection
SEVERE: </script>
Nov 27, 2015 6:53:27 PM simplecrawler.SimpleCrawler openConnection
SEVERE: 
Nov 27, 2015 6:53:27 PM simplecrawler.SimpleCrawler openConnection
SEVERE: 
Nov 27, 2015 6:53:27 PM simplecrawler.SimpleCrawler openConnection
SEVERE: 
Nov 27, 2015 6:53:27 PM simplecrawler.SimpleCrawler openConnection
SEVERE: 
Nov 27, 2015 6:53:27 PM simplecrawler.SimpleCrawler openConnection
SEVERE: 
Nov 27, 2015 6:53:27 PM simplecrawler.SimpleCrawler openConnection
SEVERE: 
Nov 27, 2015 6:53:27 PM simplecrawler.SimpleCrawler openConnection
SEVERE: 
Nov 27, 2015 6:53:27 PM simplecrawler.SimpleCrawler openConnection
SEVERE: 
Nov 27, 2015 6:53:27 PM simplecrawler.SimpleCrawler openConnection
SEVERE: <style>
Nov 27, 2015 6:53:27 PM simplecrawler.SimpleCrawler openConnection
SEVERE:     
Nov 27, 2015 6:53:27 PM simplecrawler.SimpleCrawler openConnection
SEVERE: body
Nov 27, 2015 6:53:27 PM simplecrawler.SimpleCrawler openConnection
SEVERE: {
Nov 27, 2015 6:53:27 PM simplecrawler.SimpleCrawler openConnection
SEVERE: background-color: #ffffff;
Nov 27, 2015 6:53:27 PM simplecrawler.SimpleCrawler openConnection
SEVERE: }
Nov 27, 2015 6:53:27 PM simplecrawler.SimpleCrawler openConnection
SEVERE: 
Nov 27, 2015 6:53:27 PM simplecrawler.SimpleCrawler openConnection
SEVERE: div#bodycontainer-home
Nov 27, 2015 6:53:27 PM simplecrawler.SimpleCrawler openConnection
SEVERE: {
Nov 27, 2015 6:53:27 PM simplecrawler.SimpleCrawler openConnection
SEVERE: background-color: 
Nov 27, 2015 6:53:27 PM simplecrawler.SimpleCrawler openConnection
SEVERE: #ffffff; 
Nov 27, 2015 6:53:27 PM simplecrawler.SimpleCrawler openConnection
SEVERE: background-image:url(/images/uploaded/540973958472458.png); 
try { 
HttpURLConnection con = (HttpURLConnection) new URL(url).openConnection();
 con.setConnectTimeout(5000); //set timeout to 5 seconds 
return (con.getResponseCode() == HttpURLConnection.HTTP_OK); 
} 
catch (java.net.SocketTimeoutException e) { return false; }