Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/217.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 当jsoup超时时,如何获得异常?_Java_Android_Jsoup - Fatal编程技术网

Java 当jsoup超时时,如何获得异常?

Java 当jsoup超时时,如何获得异常?,java,android,jsoup,Java,Android,Jsoup,所以我想做的是,当我的Jsoup连接超时时,我想打开一个警报对话框。现在它什么也没做。它只是跳过那个错误,并没有捕获超时异常或崩溃。我是java新手,所以我不确定如何捕获这个sockettimeoutexception并将其重新路由到另一个方法。有人能告诉我当jsoup超时时如何转到另一个方法吗 private void waterLevel() { // TODO Auto-generated method stub try { levelDoc = Jsoup.con

所以我想做的是,当我的Jsoup连接超时时,我想打开一个警报对话框。现在它什么也没做。它只是跳过那个错误,并没有捕获超时异常或崩溃。我是java新手,所以我不确定如何捕获这个sockettimeoutexception并将其重新路由到另一个方法。有人能告诉我当jsoup超时时如何转到另一个方法吗

 private void waterLevel() {
        // TODO Auto-generated method stub
 try {


levelDoc = Jsoup.connect("http://waterdata.usgs.gov/va/nwis/uv?site_no=02037500roop").timeout(3000).get();

 }  catch (SocketTimeoutException a) {
     Log.e("MyAPP", "Exception----------A!", a);
     a.printStackTrace(); 
     alertdialog();
 }   catch (Exception e) {
     Log.e("MyAPP", "Exception----------E!", e);
 }

 for (Element table : levelDoc.select("table[id=table_07_00065]")) {
     String tableText = table.text();
     depthArray = tableText.split(" ");
     waterLevel = Double.parseDouble(depthArray[4]);
     tvWaterLevel.setText(depthArray[4]+"FT");
     if(waterLevel >= 5.0 && waterLevel < 9.0){
        tvAlert.setText("LIFE JACKET REQUIRED");  
     }
     else if (waterLevel >= 9.0){
         tvAlert.setText("HIGH WATER PERMIT REQUIRED");
     }
     else{
         tvAlert.setText("");

     }
     }



}
private void水位(){
//TODO自动生成的方法存根
试一试{
levelDoc=Jsoup.connect(“http://waterdata.usgs.gov/va/nwis/uv?site_no=02037500roop)超时(3000.get();
}捕获(SocketTimeoutException a){
Log.e(“MyAPP”,“Exception------A!”,A);
a、 printStackTrace();
alertdialog();
}捕获(例外e){
Log.e(“MyAPP”,“Exception------e!”,e);
}
对于(元素表:levelDoc.select(“表[id=table\u 07\u 00065]”){
字符串tableText=table.text();
depthArray=tableText.split(“”);
水位=Double.parseDouble(水深[4]);
tvWaterLevel.setText(水深[4]+“FT”);
如果(水位>=5.0&&水位<9.0){
tvAlert.setText(“需要救生衣”);
}
否则,如果(水位>=9.0){
tvAlert.setText(“需要高水位许可证”);
}
否则{
tvAlert.setText(“”);
}
}
}
因此,我将更改后的代码添加到此中,它为我提供了我想要的:

private void waterLevel() {
        // TODO Auto-generated method stub
 try {


levelDoc = Jsoup.connect("http://waterdata.usgs.gov/va/nwis/uv?site_no=02037500").timeout(4000).get();

 }  catch (SocketTimeoutException a) {
     Log.e("MyAPP", "Exception----------A!", a);
     a.printStackTrace(); 
 }   catch (Exception e) {
     Log.e("MyAPP", "Exception----------E!", e);
 }


 tvWaterLevel.setText("");
 for (Element table : levelDoc.select("table[id=table_07_00065]")) {
     String tableText = table.text();
     depthArray = tableText.split(" ");
     waterLevel = Double.parseDouble(depthArray[4]);
     tvWaterLevel.setText(depthArray[4]+"FT");
     if(waterLevel >= 5.0 && waterLevel < 9.0){
        tvAlert.setText("LIFE JACKET REQUIRED");  
     }
     else if (waterLevel >= 9.0){
         tvAlert.setText("HIGH WATER PERMIT REQUIRED");
     }
     else{
         tvAlert.setText("");

     }
     }
 if (tvWaterLevel.length() < 1){
     connectionAlarm();
 }


}
private void水位(){
//TODO自动生成的方法存根
试一试{
levelDoc=Jsoup.connect(“http://waterdata.usgs.gov/va/nwis/uv?site_no=02037500)超时(4000.get();
}捕获(SocketTimeoutException a){
Log.e(“MyAPP”,“Exception------A!”,A);
a、 printStackTrace();
}捕获(例外e){
Log.e(“MyAPP”,“Exception------e!”,e);
}
tvWaterLevel.setText(“”);
对于(元素表:levelDoc.select(“表[id=table\u 07\u 00065]”){
字符串tableText=table.text();
depthArray=tableText.split(“”);
水位=Double.parseDouble(水深[4]);
tvWaterLevel.setText(水深[4]+“FT”);
如果(水位>=5.0&&水位<9.0){
tvAlert.setText(“需要救生衣”);
}
否则,如果(水位>=9.0){
tvAlert.setText(“需要高水位许可证”);
}
否则{
tvAlert.setText(“”);
}
}
如果(tv水位.长度()<1){
连接臂();
}
}

也许您可以将URL的内容读取到一个文件中,然后让JSoup从该文件中读取?通过这种方式,您可以将超时问题与实际读数分离,这样可以工作,但数据可能不可靠。这取决于jsoup最后一次读取URL的时间。所以我想了想,这可能不是正确的答案,但它是有效的。我添加了if(tvWaterLevel.length()<1){connectionAlarm();}}