我目前正在探索我的第一个第三方库,一切正常,除了当出现问题时它应该给我抛出一个错误,而它没有。
所以这是我的代码,我尝试导致错误,它应该导致错误,但事实并非如此,该应用程序仍在运行
例如,当我从使用者密钥中删除字母或数字时,它无法连接,并且应该会给我一个错误。
我正在查看文档,我试图遵循这个
破坏友谊
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Tweetinvi;
using Tweetinvi.Core.Authentication;
using Tweetinvi.Core;
using Tweetinvi.Credentials;
using Tweetinvi.WebLogic;
namespace Tweetinvi
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
string accessToken;
string accessTokenSecret;
string consumerKey;
string consumerSecret;
string hashTag;
string userName;
private void Form1_Load(object sender, EventArgs e)
{
}
private void button1_Click(object sender, EventArgs e)
{
try
{
Auth.SetUserCredentials(consumerKeyBox.Text, consumerSecretBox.Text, accessTokenBox.Text, accessTokenSecretBox.Text);
Tweet.PublishTweet("Hello World :)");
//User.UnFollowUser("");
}
catch(Exception ex)
{
MessageBox.Show("Something went wrong");
}
}
}
}
它不会抛出异常,因为没有要抛出的异常。
当你从Twitter发布推文时,它应该返回一个你可以检查的对象。如果 publishTweet() 方法失败,它可能不会抛出异常,而是返回一个响应对象。
检查该对象并相应地进行处理。
我是Tweetinvi的开发者,为了清楚起见,这里是Tweetinvi的工作方式。
推特抛出的
WebException
默认由ExceptionHandler
处理。这种功能的想法是,大多数开发人员并不关心它为什么失败,而只关心它是否失败。在这种情况下,您将需要使用异常记录器ExceptionHandler
。当异常失败时,Tweetinvi将返回一个空对象或假,具体取决于Twitter端点。您可以使用以下代码行禁用
ExceptionHandler
:ExceptionHandler.SwallowWebExceptions = false;
。这样做时,您必须在 Tweetinvi 类Tweetinvi.Core.Exceptions.TwitterException
上使用try/catch
.您可能还需要处理以下异常:TwitterTimeoutException
:异常已按TweetinviConfig.ApplicationSettings.HttpRequestTimeout
指定超时。TwitterNullCredentialsException
和TwitterInvalidCredentialsException
由Auth.SetUserCredentials()
设置。
如果您指定的参数之一不正确,将始终抛出
ArgumentException
和ArgumentNullException
。在下一个版本 0.9.13.0 中,我们将改进此类异常的详细信息 查找更多。
您可以在Tweetinvi中找到异常处理的wiki 这里:
https://github.com/linvi/tweetinvi/wiki/Exception-Handling
尝试此代码,看看您的用户是否已通过身份验证。如果不是,则必须是权限或您的密钥错误:
ITwitterCredentials creds = new TwitterCredentials(CONSUMER_KEY, CONSUMER_SECRET, ACCESS_TOKEN, ACCESS_TOKEN_SECRET);
Auth.SetCredentials(creds);
var authenticatedUser = User.GetAuthenticatedUser(creds);