我以前从未遇到过此错误,所以我不知道该怎么做或它意味着什么
未处理的异常类型OperationApplicationException
它出现在这段代码中:
public void putSettings(SharedPreferences pref){
ArrayList<ContentProviderOperation> ops =
new ArrayList<ContentProviderOperation>();
ops.add(ContentProviderOperation.newUpdate(Data.CONTENT_URI)
.withSelection(Data.RAW_CONTACT_ID + "=?", new String[]{String.valueOf(pref.getString(SmsPrefs.ID, ""))})
.withValue(Data.MIMETYPE,"vnd.android.cursor.item/color")
.withValue("data1",nColor).build());
getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops); //error
ops.add(ContentProviderOperation.newUpdate(Data.CONTENT_URI)
.withSelection(Data.RAW_CONTACT_ID + "=?", new String[]{String.valueOf(pref.getString(SmsPrefs.ID, ""))})
.withValue(Data.MIMETYPE,"vnd.android.cursor.item/vibrate")
.withValue("data1", nVibrate).build());
getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops); //error
ops.add(ContentProviderOperation.newUpdate(Data.CONTENT_URI)
.withSelection(Data.RAW_CONTACT_ID + "=?", new String[]{String.valueOf(pref.getString(SmsPrefs.ID, ""))})
.withValue(Data.MIMETYPE, "vnd.android.cursor.item/sound")
.withValue("data1", ringTonePath).build());
getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops);//error
}
它给了我两个选项“添加抛出声明”和“用 try/catch 包围”。
我必须做什么以及为什么?
这意味着您正在调用的方法是用throws
派生异常的指令Exception
班级。当以这种方式声明方法时,您被迫使用try/catch
阻止或添加相同的throws
(对于相同的异常或超类型)方法声明的语句。
一个例子。
我想调用一些方法foo
在我的方法里面bar
.
Here is foo
的定义:
public static void foo(String a) throws Exception {
// foo does something interesting here.
}
我想打电话foo
。如果我简单地这样做:
private void bar() {
foo("test");
}
...然后我会得到您遇到的错误。foo
向世界宣告它真的可能决定抛出一个Exception
你最好做好应对的准备。
我有两个选择。我可以改变bar
的定义如下:
private void bar() throws Exception {
foo("test");
}
现在我已经公开了我自己的警告,我的方法或我调用的某些方法可能会抛出一个错误Exception
我的方法的用户应该处理的问题。由于我已将责任推迟给方法的调用者,因此我的方法不必处理异常本身。
如果可以的话,最好自己处理异常。这给我们带来了第二个选择,即try/catch
:
private void bar() {
try {
foo("test");
} catch(Exception e) {
Log.wtf("MyApp", "Something went wrong with foo!", e);
}
}
现在我已经处理了潜力Exception
被抛出foo
编译器正在抱怨。既然已经处理了,我就不需要再添加了throws
指示我的bar
method.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)