Комментарии 13
www.youtube.com/watch?v=vDap14AoX2A этот же доклад на видео
function getUser(id) {
result = db.getUserById(id)
if (result)
return result as User
else
return “Can’t find user ” + id
}
тут идет проверка на null. Котлин об этом сам догадывается или опечатка?
Ключевого слова function в котлине ент, да и требуется указывать возвращаемый тип. Подозреваю, это что-то другое
Добрый день
Это не kotlin код, а некая вариация псевдо кода, созданная просто чтобы показать пример использования.
Это не kotlin код, а некая вариация псевдо кода, созданная просто чтобы показать пример использования.
Не очень удачный пример обработки ошибки.
db.getUserById(id) не должна генерировать исключения, если это так, и строго соблюдается всегда получение nullptr в случае ошибки, но какой ошибки, нет Usera? или сервер базы данных не отвечает? в этом случае ответ “Can’t find user with id=-2” будет не верный.
А если возникнет исключение?, что вы получите и что с ним делать?
Обработка ошибок и исключений, две разных задачи, бывает так, что исключение не является ошибкой в программе, тут можно было бы долго рассуждать. Самое сложное, предусмотреть «нештатные» ситуации заранее, оставить систему по возможности работоспособной, и не погрязнуть в задаче «сторожить сторожа».
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?
Вроде смарт-контракты это про смарт касты, а совсем не про обработку ошибок? Или я перепутал с чем-то?
ага, а еще про смарт часы
пардон, кнопка "смарт" залипла на клавиатуре. Правильно "контракты про смарт-касты" вроде.
Кнопка «смарт»?=)
en.wikipedia.org/wiki/Design_by_contract
en.wikipedia.org/wiki/Design_by_contract
НЛО прилетело и опубликовало эту надпись здесь
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Исключения в Kotlin и их особенности