【问题标题】:Twitter4j Unhandled ExceptionTwitter4j 未处理的异常
【发布时间】:2016-07-06 01:08:49
【问题描述】:

Twitter.getHomeTimeline() 从用户的主页时间线返回一个最新推文列表。很遗憾。 Eclipse 告诉我我有一个未经处理的异常。当我查看该方法时,getHomeTimeline() 告诉我当 twitter 网络不可用时会引发异常。这怎么可能?我对这个 twitter4j API 很陌生,不明白此时无法访问网络。

package com.follow3d.rob;
import java.util.List;
import twitter4j.*;
import twitter4j.conf.*;
public class Follow3d {

public static void main(String[] args) {


    ConfigurationBuilder cb = new ConfigurationBuilder();
    cb.setDebugEnabled(true)
      .setOAuthConsumerKey("XXXXXXXXXX")//removed on purpose
      .setOAuthConsumerSecret("XXXXXXXXXX")//removed on purpose
      .setOAuthAccessToken("XXXXXXXXXX")//removed on purpose
      .setOAuthAccessTokenSecret("  XXXXXXXXXX");//removed on purpose
    TwitterFactory tf = new TwitterFactory(cb.build());
    Twitter twitter = tf.getInstance();

    List<Status> statuses = twitter.getHomeTimeline();
    for (Status status1 : statuses ){
        System.out.println(status1.getUser().getName() + ": " + status1.getText());
        }
    }
}

抛出: TwitterException - 当 Twitter 服务或网络不可用时

【问题讨论】:

  • 断开您的计算机与互联网的连接。您现在无法使用 Twitter 服务或网络。
  • @Aurand 嗯,是的.. 但问题是,我的电脑没有与互联网断开连接,当我运行这个程序时仍然出现这个错误。
  • 您得到的错误来自编译器。 Twitter4J 没有任何例外。您从编译器收到一个错误,告诉您您的代码必须处理声明的抛出异常(即捕获它,或重新抛出它)。阅读docs.oracle.com/javase/tutorial/essential/exceptions
  • 哦,哇。谢谢你。 @JB 尼泽特

标签: java eclipse twitter


【解决方案1】:

哒哒!!!!有用!!!谢谢你们的帮助。我只需要处理异常。

package com.follow3d.rob;

import java.util.List;
import twitter4j.*;
import twitter4j.conf.*;

public class Follow3d {

public static void main(String[] args) {

    ConfigurationBuilder cb = new ConfigurationBuilder();
    cb.setDebugEnabled(true).setOAuthConsumerKey("xxxxxxxxxx")
            .setOAuthConsumerSecret("xxxxxxxxxx")
            .setOAuthAccessToken("xxxxxxxxxx")
            .setOAuthAccessTokenSecret("xxxxxxxxxx");
    TwitterFactory tf = new TwitterFactory(cb.build());
    Twitter twitter = tf.getInstance();
    try {
        List<Status> statuses = twitter.getHomeTimeline();
        for (Status status1 : statuses) {
            System.out.println(status1.getUser().getName() + ": " + status1.getText());
        }
    } catch (TwitterException name) {
        System.out.println("You don't have internet connection.");
    }

    finally {
        System.out.println("You don't have internet connection.");
    }
  }
}

【讨论】:

  • "You don't have internet connection" 终于到了吗?为什么?
  • 是的,你知道,我实际上不需要包含 finally 语句。但我正在学习如何捕获异常,我认为这是必需的。不过没关系,我认为它不会伤害任何东西
  • 好的,但仅供参考 finally 总是运行。因此,如果您的try 成功完成,您仍然会在日志中看到“无互联网”,这可能会造成混淆。您通常使用 finally 来清理您的资源(关闭流、数据库连接等...)
  • 谢谢,我已经在我的代码中改变了这个。你的解释对我很有帮助。
猜你喜欢
  • 2014-10-08
  • 2011-11-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-16
相关资源
最近更新 更多