RD如果我可能会建议一个相当扭曲的方法来处理后台线程中的错误。考虑将调用包装在后台线程的try catch中并返回一个有状态的对象。所以如果你想要后台线程返回一个字符串,创建一个BoolString类。
//a utility class to signal success or failure, return an error message, and return a useful String value
//see Try Out in C#
public final class BoolString {
public final boolean success;
public final String err;
public final String value;
public BoolString(boolean success, String err, String value){
this.success= success;
this.err= err;
this.value= value;
}
}
用法:
public BoolString tryEncrypt(String inString, String password) {
try {
String value= encrypt(inString, password);
return new BoolString(true,"",value);
}
catch (GeneralSecurityException e){
return new BoolString(false,e.getMessage(),"");
}
}
protected void onPostExecute(BoolString result){
progress.dismiss();
if (result.success){
result.value;
}
else {
result.err;
}
}