Android Throw Exception - PullRequest
       10

Android Throw Exception

2 голосов
/ 31 декабря 2011

В моем приложении я использую класс SQLiteOpenHelper, и у него есть метод insertOrThrow. Я хочу узнать, что этот метод закроет мое соединение, прежде чем выдать исключение? И в определении метода написано, что «идентификатор строки вновь вставленной строки или -1, если произошла ошибка»

Когда выдается исключение, как оно имеет возвращаемое значение? Что-то не так. Пояснение или кинь?

Вот как я использую InsertOrThrow. Я хочу знать, когда я объявляю throws Exception моему методу, нужно ли использовать try-catch (если у меня нет особой вещи, которую нужно делать в catch, как мой опыт.)?

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

Ответы [ 2 ]

1 голос
/ 01 января 2012

Это зависит;если this.Close() может выдать исключение, то оно все равно должно быть объявлено как выброшенное или перехваченное.Часто это делается в небольшом служебном методе.

Не обязательно обязательно использовать catch, вы можете просто try / finally.

Относительно возвращаемых значений: методы, которые выходят из-за исключения, не имеют возвращаемого значения.

Исключения должны инкапсулировать достаточно информации, чтобы либо:

  • позволить вызывающей стороне сделать что-то полезноеза исключением, например, повторите операцию или
  • помогите разработчику разобраться в проблеме и приведите его / ее к решению.

Я бы рекомендовал вамследовать стандартным соглашениям об именах Java, чтобы не запутывать читателей вашего кода: нефинальные переменные должны начинаться со строчной буквы.Имена методов также должны начинаться со строчных букв.

Кроме того, вам не нужно вводить методы (или переменные) в качестве предисловия с this, когда нет необходимости устранять неоднозначность для свойства, к которому вы обращаетесь.

0 голосов
/ 04 сентября 2017

Когда выдается исключение, как оно имеет возвращаемое значение?Что-то не так.

Да, вы правы.Документация кажется неправильной.

insertOrThrow не возвращает -1, вместо этого он выдаст SQLException, если запрос не выполнен.Есть еще один метод с именем insert, который будет возвращать -1, если запрос не выполнен, и новый созданный rowID, если он будет успешным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...