Как стать автором
Обновить

Комментарии 13

function getUser(id) {
result = db.getUserById(id)
if (result)
return result as User
else
return “Can’t find user ” + id
}

тут идет проверка на null. Котлин об этом сам догадывается или опечатка?
Ключевого слова function в котлине ент, да и требуется указывать возвращаемый тип. Подозреваю, это что-то другое
Добрый день
Это не kotlin код, а некая вариация псевдо кода, созданная просто чтобы показать пример использования.
Не очень удачный пример обработки ошибки.
db.getUserById(id) не должна генерировать исключения, если это так, и строго соблюдается всегда получение nullptr в случае ошибки, но какой ошибки, нет Usera? или сервер базы данных не отвечает? в этом случае ответ “Can’t find user with id=-2” будет не верный.
А если возникнет исключение?, что вы получите и что с ним делать?
Обработка ошибок и исключений, две разных задачи, бывает так, что исключение не является ошибкой в программе, тут можно было бы долго рассуждать. Самое сложное, предусмотреть «нештатные» ситуации заранее, оставить систему по возможности работоспособной, и не погрязнуть в задаче «сторожить сторожа».

В последнем примере по-моему вариант с try-catch получается чище.


fun makeRequest(request: Request): List<ResponseData> {
  val response = httpClient.newCall(request).execute().body()
  ObjectMapper().readValue(response, ParsedResponse::class.java).data
}

fun main(args : Array<String>) {
  try { 
    makeRequest(RequestBody(args)).data.toString()
  } catch (Exception exception) {
    exception.message
  }
}

А как обстоят дела с фильтрацией ошибок по типу? Двухуровневый when?

Ну если оборачивать сразу всё, то и Try выглядит проще. Хотелось показать несколько блоков, которые отдельно оборачиваются.
По поводу фильтрации по уровню — или двухуровневый when, или через if и when. Очень не хватает pattern matching из scala…

Вроде смарт-контракты это про смарт касты, а совсем не про обработку ошибок? Или я перепутал с чем-то?

ага, а еще про смарт часы

пардон, кнопка "смарт" залипла на клавиатуре. Правильно "контракты про смарт-касты" вроде.

НЛО прилетело и опубликовало эту надпись здесь
Опечатка, исправили. Спасибо за внимательность:)
Зарегистрируйтесь на Хабре, чтобы оставить комментарий