CSharp Exceptions - LIHACHTETAN/ClassicUO-Bad-Newbie-CSharp-Scripts-IDE GitHub Wiki
Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
Винятки, try/catch/finally та throw
try обмежує захищену ділянку, catch обробляє відповідний виняток, finally виконує очищення при виході. Фільтр when вибирає обробник. throw; повторно кидає поточний виняток, зберігаючи вихідний стек; throw exception; змінює його початок.
Простий приклад (Example.cs)
Збережіть цей приклад окремо як Example.cs. Запускайте його незалежно від інших прикладів на сторінці.
Example.cs:
// PROJECT-EXAMPLE
try { int.Parse("not a number"); }
catch (System.FormatException) { System.Console.WriteLine("Invalid"); }
Результат:
Invalid
try
{
int value = int.Parse("not a number");
UO.Print(value.ToString());
}
catch (FormatException error)
{
UO.Print(error.Message);
}
finally
{
// Dispose resources owned by this scope.
}
int RequirePositive(int value)
{
if (value <= 0) throw new ArgumentOutOfRangeException(nameof(value));
return value;
}
UO.Print(RequirePositive(3).ToString());
Не перехоплюйте скасування без наміру завершити сценарій. Очищення має звільняти власні ресурси; скасований ігровий виклик у finally може знову кинути виняток. Помилка компіляції виявляється до запуску і не є звичайною помилкою всередині try коду, що виконується.
Офіційна документація: Винятки, try/catch/finally та throw - Microsoft Learn.