Я столкнулся с проблемой обработки исключений, возникающих в сопрограмме, в моей модели представления Android. У меня есть функция addCategory в моей CategoryViewModel, которая добавляет категорию в репозиторий. Я хочу обрабатывать исключения, возникающие во время этого процесса, и отображать сообщения об ошибках в моем пользовательском интерфейсе.
Однако, когда в сопрограмме создается исключение (например, если превышен предел категории), сообщение об ошибке регистрируется, но не отображается в пользовательском интерфейсе (такого поведения не происходит, когда срабатывает исключение «Достигнуто максимальное количество символов»). Я хочу убедиться, что сообщение об ошибке правильно передается во фрагмент и отображается в TextInputLayout.
CategoryViewModel:
class CategoryViewModel(private val categoryRepository: CategoriesRepository) : ViewModel() {
private val exceptionHandler = CoroutineExceptionHandler { coroutineContext, throwable ->
throwable.message?.let {
Log.d("Error", it)
}
}
fun addCategory(categoryName: String, categoryIconId: Int?, type: String) {
if (categoryName.length > 20) throw Exception("Maximum character limit reached")
viewModelScope.launch(exceptionHandler) {
val categoryCount = categoryRepository.getCategoryCount(null).first()
if (categoryCount >= 10) throw Exception("Maximum category limit reached")
val categoryObject = Category(name = categoryName, iconId = categoryIconId, type = type)
categoryRepository.insertCategory(categoryObject)
}
}
}
Фрагмент:
try {
categoryVM.addCategory(categoryName, iconId, type)
} catch (e: Exception) {
textInputLayout.error = e.message
}
Я пытался вызвать исключение из исключенияHandler, но это просто приводит к сбою приложения.
private val exceptionHandler = CoroutineExceptionHandler { coroutineContext, throwable ->
throwable.message?.let {
throw Exception(it)
}
}
Подробнее здесь: https://stackoverflow.com/questions/783 ... ine-kotlin
Обработка исключений в Coroutine Kotlin ⇐ Android
Форум для тех, кто программирует под Android
1727786828
Anonymous
Я столкнулся с проблемой обработки исключений, возникающих в сопрограмме, в моей модели представления Android. У меня есть функция addCategory в моей CategoryViewModel, которая добавляет категорию в репозиторий. Я хочу обрабатывать исключения, возникающие во время этого процесса, и отображать сообщения об ошибках в моем пользовательском интерфейсе.
Однако, когда в сопрограмме создается исключение (например, если превышен предел категории), сообщение об ошибке регистрируется, но не отображается в пользовательском интерфейсе (такого поведения не происходит, когда срабатывает исключение «Достигнуто максимальное количество символов»). Я хочу убедиться, что сообщение об ошибке правильно передается во фрагмент и отображается в TextInputLayout.
CategoryViewModel:
class CategoryViewModel(private val categoryRepository: CategoriesRepository) : ViewModel() {
private val exceptionHandler = CoroutineExceptionHandler { coroutineContext, throwable ->
throwable.message?.let {
Log.d("Error", it)
}
}
fun addCategory(categoryName: String, categoryIconId: Int?, type: String) {
if (categoryName.length > 20) throw Exception("Maximum character limit reached")
viewModelScope.launch(exceptionHandler) {
val categoryCount = categoryRepository.getCategoryCount(null).first()
if (categoryCount >= 10) throw Exception("Maximum category limit reached")
val categoryObject = Category(name = categoryName, iconId = categoryIconId, type = type)
categoryRepository.insertCategory(categoryObject)
}
}
}
Фрагмент:
try {
categoryVM.addCategory(categoryName, iconId, type)
} catch (e: Exception) {
textInputLayout.error = e.message
}
Я пытался вызвать исключение из исключенияHandler, но это просто приводит к сбою приложения.
private val exceptionHandler = CoroutineExceptionHandler { coroutineContext, throwable ->
throwable.message?.let {
throw Exception(it)
}
}
Подробнее здесь: [url]https://stackoverflow.com/questions/78305951/handling-exceptions-in-coroutine-kotlin[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия