2011-12-31 23 views
2

、私はSQLiteOpenHelperクラスを使用して、それはinsertOrThrow方法があります。私はこのメソッドが例外をスローする前に私の接続を閉じることを学びたいですか?そして、それは、そのメソッドの定義に書かれている「新たに挿入された行の行ID、またはエラーが発生した場合は-1」Androidのスロー例外

をするとき、それは戻り値がどのように例外をスロー?何かが間違っている。説明またはスロー?

これは私がInsertOrThrowを使用する方法です。 私はそれがtry-catchを使用する必要がある、私は私の方法にthrows Exceptionを宣言するときに知ってほしい(私は私のexpのようなキャッチに行うには、特別なものを持っていない場合。)?

public long insert(ContentValues cv) throws Exception { 
    try 
    { 
     long rowId = getWritableDatabase().insertOrThrow(_tableName, null, cv); 
     return rowId; 
    } 
    catch (Exception ex) { 
     throw ex; 
    } 
    finally{ 
     Close(); 
    } 
} 
+0

あなたが実際に試したことを投稿してください。 – Lion

答えて

1

これは依存します。 this.Close()が例外をスローする可能性がある場合、スローまたはキャッチされたとして宣言する必要があります。しばしば、これは小さな実用的な方法で包まれます。

それは、ない必須catchを使用することができます単にtry/finallyです。

の戻り値について:メソッド例外のために出口が戻り値を持っていません。

例外のいずれかに十分な情報をカプセル化する必要があります

  • は、例えば、呼び出し側は例外で有用な何かを行うことができ、操作を再試行し、または
  • /問題を理解する上で開発者を支援し、彼を導く
  • 彼女を解決する。

私はあなたのコードの混乱読者を避けるために、標準的なJavaの命名規則に従うことをお勧めしたい:非final変数は小文字で始める必要があります。メソッド名も小文字で始める必要があります。

また、アクセスしているプロパティを明確にする必要がない場合は、メソッド(または変数)の先頭にthisを付ける必要はありません。

+0

お返事ありがとうございます。私は私の会社でVB.NETを使用しています。私たちの大会はそうです。 Java標準に従うには時間が必要です。 InsertOrThrowメソッドはどうですか?例外をスローするか-1を返しますか?またはその両方? – ahmet

+0

@ AhmetHudaiAYDIN *値を返すか、*例外をスローするか、例外をスローします。 –

+0

下の投票は...ですか? –

0

例外をスローすると、どのように戻り値が返されますか?何かが間違っている。

はい、あなたは正しいです。ドキュメントは間違っているようです。

insertOrThrow-1が返されず、代わりにクエリが失敗した場合はSQLExceptionが返されます。 insertという別のメソッドがあり、クエリが失敗した場合は-1を返し、成功した場合はrowIDを新しく作成します。

関連する問題