Middle
როგორ დავიჭიროთ გამონაკლისები კოდში, გამოიყენეთ await?
sobes.tech AI
პასუხი AI-სგან
await გამოყენებით კოდის გამონაკლისები იჭერება სტანდარტული try...catch ბლოკებით.
მაგალითი:
public async Task GetDataAsync()
{
try
{
// ასინქრონული ოპერაციის გამოძახება, რომელიც შეიძლება გამოიწვიოს გამონაკლისი
var result = await SomeService.FetchDataFromApiAsync();
// წარმატებული შედეგის დამუშავება
}
catch (UnauthorizedAccessException ex)
{
// სპეციფიკური გამონაკლისის დამუშავება (მაგ. უფლებების ნაკლებობა)
Console.WriteLine($"ავტორიზაციის შეცდომა: {ex.Message}");
}
catch (HttpRequestException ex)
{
// HTTP მოთხოვნის გამონაკლისის დამუშავება (მაგ. ქსელის პრობლემები)
Console.WriteLine($"HTTP მოთხოვნის შეცდომა: {ex.Message}");
}
catch (Exception ex)
{
// სხვა ყველა გაუმკლავებელი გამონაკლისის დამუშავება
Console.WriteLine($"უცნობი შეცდომა: {ex.Message}");
}
}
თუ await-ით მითითებული ასინქრონული ოპერაცია გამოიწვევს გამონაკლის, პირდაპირი კოდის ნაკადი შეწყდება და კონტროლი გადაეცემა შესაბამის catch ბლოკს იმავე ასინქრონულ ფუნქციაში (ან მასზე მოწოდებულში). await-ის გარეშე, ასინქრონული ოპერაციის გამონაკლისი არ იქნება დაჭერილი მოწოდებულ ფუნქციაში მანამ, სანამ ოპერაცია/მუშაობა არ დასრულდება და მისი შედეგი/გამონაკლისი არ იქნება მოთხოვნილი (მაგ. .Result ან .Wait(), რაც არ არის რეკომენდებული). await ფაქტობრივად "გადაშლის" გამონაკლისს ტასკიდან და ისევ ის აგდებს, რაც საშუალებას იძლევა ის ჩვეულებრივ try...catch-ით დაიჭიროს.