我试图从以下方法返回一个字符串.
public String openCon() {
try {
Scanner scan = new Scanner(System.in);
URL sitex = new URL("http://" + scan.nextLine());
URLConnection connection = sitex.openConnection();
Object content = sitex.getContent();
BufferedReader in = new BufferedReader(new InputStreamReader(sitex.openStream()));
String str;
String x = "1";
while ((str = in.readLine()) != null) {
x += str;
}
in.close();
return x;
}
catch(Exception e) {
System.out.println(e);
}
}
Run Code Online (Sandbox Code Playgroud)
Jon*_*eet 13
问题不是从try块返回- 问题是如果抛出异常,则不返回任何内容.您正在捕获异常...但是在没有返回任何内容的情况下到达方法的末尾.(用更多的技术术语来说:非空方法的结束不应该是可达的.)
就个人而言,我只是catch完全删除该块,并throws为在体内抛出的任何异常添加声明.你并没有真正处理异常 - 你只是将它们打印出来并忽略它们,这很少是一个好主意.从开始捕捉Exception通常是一个非常糟糕的主意.
顺便说一句,你应该也关闭BufferedReader,并URLConnection在值finally块,他们甚至在例外的情况下关闭.我还建议将固定的编码名称传递给InputStreamReader,或使用更高级别的HTTP客户端API,它将使用响应中的内容类型标头.哦,并StringBuilder在循环中使用而不是字符串连接.
| 归档时间: |
|
| 查看次数: |
2722 次 |
| 最近记录: |