[解決済み] 未処理例外型エラー
質問
このエラーは初めてなので、どうすればいいのか、どういう意味なのかよくわかりません。
<ブロッククオート
未処理の例外タイプ
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
}
throws宣言を追加する」と「try/catchで囲む」の2つのオプションが表示されます。
どうすればいいのでしょうか?
解決方法は?
呼び出しているメソッドが
throws
ディレクティブから派生した例外に対して
Exception
クラスがあります。 メソッドがこのように宣言されている場合、例外を処理するために
try/catch
ブロックを追加するか、同じ
throws
(同じ例外やスーパータイプに対する) ステートメントをメソッド宣言に追加します。
一例です。
あるメソッドを呼び出したい
foo
自分のメソッドの中で
bar
.
以下は
foo
の定義です。
public static void foo(String a) throws Exception {
// foo does something interesting here.
}
を呼び出したい。
foo
. 単純にこうすると
private void bar() {
foo("test");
}
...すると、あなたが経験しているようなエラーが発生します。
foo
を投げることに決めたかもしれないことを世界に宣言しています。
Exception
そして、それに対処できるように準備しなければなりません。
選択肢は2つあります。 私は変更することができます
bar
の定義は以下の通りです。
private void bar() throws Exception {
foo("test");
}
今、私は自分のメソッドや、私が呼び出したメソッドが
Exception
であり、私のメソッドのユーザが対処すべきものです。 私は自分のメソッドの呼び出し側に責任を先送りしているので、私のメソッドは例外そのものを処理する必要はありません。
できることなら、自分で例外を処理したほうがいい場合が多い。 そこで、2つ目の選択肢である
try/catch
:
private void bar() {
try {
foo("test");
} catch(Exception e) {
Log.wtf("MyApp", "Something went wrong with foo!", e);
}
}
これで、潜在的な
Exception
によって投げられた
foo
コンパイラが文句を言っていたこと。 この問題は解決されたので
throws
ディレクティブを
bar
メソッドを使用します。
関連
-
[解決済み】"|="の意味は何ですか?(パイプ等号演算子)
-
[解決済み】デフォルトのキーストアファイルが存在しない?
-
[解決済み】メソッド本体がない、またはJavaで抽象的な宣言をする
-
[解決済み】純粋なJUnitテストにVisibleForTestingを使用する方法
-
[解決済み] エラーの種類 3 エラーです。アクティビティクラス{}が存在しない
-
[解決済み] Javaでパラメータの型の横にある3つの点は何を意味するのですか?
-
[解決済み] JUnit 4のテストで、ある例外が投げられたことをどのように断言しますか?
-
[解決済み] EclipseのAndroidプラグインで "Debug certificate expired "エラーが発生する。
-
[解決済み] Rが解決できない - Androidエラー
-
[解決済み] 汎用型Tのクラスインスタンスを取得する方法を教えてください。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】エラー:配列または java.lang.Iterable のインスタンスに対してのみ反復処理を行うことができます。
-
[解決済み] java のクラス内のコンストラクタは、指定された型に適用できない
-
[解決済み] メソッドがスーパータイプのメソッドをオーバーライドまたは実装していない - Overrideの場合
-
[解決済み】メソッド本体がない、またはJavaで抽象的な宣言をする
-
[解決済み】Javaメソッドスタブ
-
[解決済み] JavaでSSLピアが正しくシャットダウンされない
-
[解決済み] エラー - trustAnchors パラメータは空であってはなりません。
-
[解決済み】Javaの".class expected "について
-
[解決済み】Eclipseで「パッケージエクスプローラー」ビューが見つからない
-
[解決済み] SQLエラー。0, SQLState: 08S01 通信リンクの失敗 [重複]。