Докато прилагах интеграция на Twitter в моето приложение, открих следната странност на дебъгера на Eclipse. На какво се дължи това?
Използвам тази AsyncTask за получаване на токен на заявка от twitter с помощта на twitter4j 3.0.3.
public class TwitterRequestAsync extends AsyncTask<Void, Void, RequestToken> {
private Context context;
public TwitterRequestAsync(Context context) {
this.context = context;
}
@Override
protected RequestToken doInBackground( Void... params ) {
Twitter twitter = getTwitter(); // getTwitter() is in enclosing class
try {
RequestToken token = twitter.getOAuthRequestToken();
return token;
}
catch (TwitterException e) {
Log.e( TAG, e.getMessage(), e );
return null;
}
}
@Override
protected void onPostExecute( RequestToken result ) {
super.onPostExecute( result );
if ( result != null ) {
// stuffs concerning request token here
}
}
}
Когато отстранявам грешки в този код, изглежда, че има хвърлено изключение, когато getOAuthRequestToken() се изпълнява и следващият ред, който дебъгерът показва, че се изпълнява, е в клаузата catch, return null;
Въпреки това, резултатът, който се връща към onPostExecute(...) е валиден токен на заявка, така че дебъгерът прави нещо странно. Почистих проекта си и рестартирах Eclipse всеки няколко пъти без промяна в това поведение. Счупен ли съм?