gpt4 book ai didi

java - 如果忽略发生返回其他内容?

转载 作者:行者123 更新时间:2023-12-02 13:38:09 25 4
gpt4 key购买 nike

package utils;

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class Urlpicture {

public String get_main_url(int num) {
String jpgurl = null;
try{
String url = "https://www.zigbang.com/items1/"+num;
jpgurl = "http://z1.zigbang.com/items/7697786/538ec7a16033f0c32eac29ac50deb04a1e6bf3ba.jpg?h=800&q=60";
Document doc = Jsoup.connect(url).get(); // this part require try catch
jpgurl = doc.select("img[src$=.jpg?h=800&q=60]").get(0).absUrl("src");



System.out.println(url);
System.out.println(jpgurl);

}catch(Exception e){
e.printStackTrace();
}
return jpgurl;




}


}

从 Jsoup Connect 获取文档。但如果 Jsoup.connect 给出错误。我想要jgurl 作为其他东西并继续运行代码。这不可能吗?(此代码将从外部调用多次,但如果发生一个异常,它就会停止)

外部源调用此 urlpicture

    @RequestMapping("/search")
public ModelAndView searchHandler() throws JsonProcessingException {
ModelAndView mav = new ModelAndView("t_search");

List<HashMap<String, Object>> mlist = rd.test_room();


//=====================================================
List<String> urlcol = new ArrayList<>();
JSONArray json_arr=new JSONArray();//
for (Map<String, Object> map : mlist) {
JSONObject json_obj=new JSONObject();
String url = null;
System.out.println(map.get("SELL_NUM"));
int num = Integer.parseInt(map.get("SELL_NUM")+"");
String str = (urp.get_main_url(num).toString());// this calling the function
System.out.println(str);
}
urlcol.add(url);
for (Map.Entry<String, Object> entry : map.entrySet()) {
String key = entry.getKey();

Object value = entry.getValue();


try {

json_obj.put(key,value);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
(json_arr).put(json_obj);

}

================================================== ============修复后

@RequestMapping("/search")
public ModelAndView searchHandler() throws JsonProcessingException {
ModelAndView mav = new ModelAndView("t_search");

List<HashMap<String, Object>> mlist = rd.test_room();



List<String> urlcol = new ArrayList<>();
JSONArray json_arr=new JSONArray();
for (Map<String, Object> map : mlist) {
JSONObject json_obj=new JSONObject();
String url = null;
String input = null;
System.out.println(map.get("SELL_NUM"));
int num = 0;
num = Integer.parseInt(map.get("SELL_NUM")+"");
input = "https://www.zigbang.com/items1/"+num;
System.out.println(input);

try{
url= (urp.get_main_url(input));
System.out.println(url);

}catch(Exception e){
System.out.println("No=");
e.printStackTrace();
url = "http://z1.zigbang.com/items/7697786/538ec7a16033f0c32eac29ac50deb04a1e6bf3ba.jpg?h=800&q=60";

}

@Service
public class Urlpicture {

public String get_main_url(String url) {
Document doc;
String jpgurl = null;
try{

jpgurl = "http://z1.zigbang.com/items/7697786/538ec7a16033f0c32eac29ac50deb04a1e6bf3ba.jpg?h=800&q=60";
jpgurl = Jsoup.connect(url).get().select("img[src$=.jpg?h=800&q=60]").get(0).absUrl("src");


}catch(Exception e){
e.printStackTrace();

}finally{

return jpgurl;
}

================================================== =====================修复后,异常后继续运行。但即使 url 链接存在且编号有效它返回所有值作为异常。

7666495
https://www.zigbang.com/items1/7666495// this link is valid but throw exception
No=
java.lang.NullPointerException
at controller.main_controller.searchHandler(main_controller.java:54)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.springf

我不知道为什么这会不断抛出所有值的异常

最佳答案

问题出在 jgurl 变量的范围上,您需要在 try block 之前声明该变量,如下所示。

此外,要解决第二个问题,您需要将下载图像逻辑提取到单独的方法中,并在未找到给定 的图像时使用默认的 num 再次调用它num,也如下所示:

public String get_main_url(int num) {
int num = 7453201;
String jpgurl = null;
try {
downloadImage(num);
} catch (Exception e) {
e.printStackTrace();
num=0;//set the default value for which img exists
downloadImage(num);//call downloadImage with default num
}
}

private String downloadImage(int num) {
String url = "https://www.zigbang.com/items1/"+num;
System.out.println(url);
Document doc = Jsoup.connect(url).get();
jpgurl = doc.select("img[src$=.jpg?h=800&q=60]").get(0).absUrl("src");
System.out.println(i + "="+jpgurl);
}

关于java - 如果忽略发生返回其他内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42885684/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com