Я столкнулся с одной проблемой при обработке случая, когда await Task возвращает значение null.
В коде ниже, если метод GetByName() возвращает значение null. Тогда в моем графическом интерфейсе кода вызова появится исключение ниже. Я думаю, это потому, что GetByName() возвращает значение null, и я вызываю его с помощью await.
Могу ли я узнать, есть ли лучший способ справиться с таким случаем? Моя цель - просто сделать что-то, когда return не равен нулю, и сделать что-то другое, если return равно нулю. И то, и другое имеет смысл с точки зрения логики.
blazor.webview.js:1 One or more errors occurred
(Status(StatusCode="Cancelled", Detail="No message returned from method."))
at System.Threading.Tasks.Task.ThrowIfExceptional(Boolean includeTaskCanceledExceptions)
at System.Threading.Tasks.Task`1.GetResultCore(Boolean waitCompletionNotification)
at DataView2.Pages.Dataset.ImportDataset.PickFileFath()
at Microsoft.AspNetCore.Components.ComponentBase.CallStateHasChangedOnAsyncCompletion(Task task)
at MudBlazor.MudBaseButton.OnClickHandler(MouseEventArgs ev)
at Microsoft.AspNetCore.Components.RenderTree.Renderer.GetErrorHandledTask(Task taskToHandle, ComponentState owningComponentState)
public async Task GetByName(string datasetName)
{
try
{
var entities = await _repository.GetAllAsync();
var returnValue = entities.FirstOrDefault(e => e.Name == datasetName);
if (returnValue == null)
return await Task.FromResult(null); // here I mean return null
else
return returnValue;
}
catch (Exception ex)
{
// Log the exception
Console.WriteLine($"Error: {ex.Message}");
// Optionally, throw a gRPC-specific error to return a meaningful message
throw new RpcException(new Status(StatusCode.Internal, "An error occurred while retrieving the database."));
}
}
// Below is the code to invoke GetByName method
var curDbService = await appEngine.DatabaseRegistryService.GetByName(result.FileName);
if (curDbService != null)
{
// Do something here
}
else
{
// Do others
}
Подробнее здесь: https://stackoverflow.com/questions/790 ... in-c-sharp
Как обрабатывать ожидающий Task возврат нулевого случая в С# ⇐ C#
Место общения программистов C#
-
Anonymous
1727244288
Anonymous
Я столкнулся с одной проблемой при обработке случая, когда await Task возвращает значение null.
В коде ниже, если метод GetByName() возвращает значение null. Тогда в моем графическом интерфейсе кода вызова появится исключение ниже. Я думаю, это потому, что GetByName() возвращает значение null, и я вызываю его с помощью await.
Могу ли я узнать, есть ли лучший способ справиться с таким случаем? Моя цель - просто сделать что-то, когда return не равен нулю, и сделать что-то другое, если return равно нулю. И то, и другое имеет смысл с точки зрения логики.
blazor.webview.js:1 One or more errors occurred
(Status(StatusCode="Cancelled", Detail="No message returned from method."))
at System.Threading.Tasks.Task.ThrowIfExceptional(Boolean includeTaskCanceledExceptions)
at System.Threading.Tasks.Task`1.GetResultCore(Boolean waitCompletionNotification)
at DataView2.Pages.Dataset.ImportDataset.PickFileFath()
at Microsoft.AspNetCore.Components.ComponentBase.CallStateHasChangedOnAsyncCompletion(Task task)
at MudBlazor.MudBaseButton.OnClickHandler(MouseEventArgs ev)
at Microsoft.AspNetCore.Components.RenderTree.Renderer.GetErrorHandledTask(Task taskToHandle, ComponentState owningComponentState)
public async Task GetByName(string datasetName)
{
try
{
var entities = await _repository.GetAllAsync();
var returnValue = entities.FirstOrDefault(e => e.Name == datasetName);
if (returnValue == null)
return await Task.FromResult(null); // here I mean return null
else
return returnValue;
}
catch (Exception ex)
{
// Log the exception
Console.WriteLine($"Error: {ex.Message}");
// Optionally, throw a gRPC-specific error to return a meaningful message
throw new RpcException(new Status(StatusCode.Internal, "An error occurred while retrieving the database."));
}
}
// Below is the code to invoke GetByName method
var curDbService = await appEngine.DatabaseRegistryService.GetByName(result.FileName);
if (curDbService != null)
{
// Do something here
}
else
{
// Do others
}
Подробнее здесь: [url]https://stackoverflow.com/questions/79021304/how-to-handle-await-task-return-null-case-in-c-sharp[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия