Chciałbym rozpatrzyć sytuację np. gdy dzielimy przez zero w C#. Mamy powiedzmy kod
Console.WriteLine("Podaj pierwszą liczbę: ");
float num1 = Convert.ToFloat(Console.ReadLine());
Console.WriteLine("Podaj drugą liczbę: ");
float num2 = Convert.ToFloat(Console.ReadLine());
float result = num1 / num2;
Console.WriteLine("Wynik dzielenia to: " + result);
I czy taki sposób obsłużenia błędu jest dobry?
try
{
Console.WriteLine("Podaj pierwszą liczbę: ");
float num1 = Convert.ToFloat(Console.ReadLine());
Console.WriteLine("Podaj drugą liczbę: ");
float num2 = Convert.ToFloat(Console.ReadLine());
if (num2 == 0) throw new DivideByZeroException();
float result = num1 / num2;
Console.WriteLine("Wynik dzielenia to: " + result);
}
catch (DivideByZeroException e)
{
Console.WriteLine("Nie wolno dzielić przez zero!");
}
Jaki preferujecie sposób obsługi błędów? Napisanie Debug.Assert, zastosowanie if-ów, rzucenie wyjątków, dzienniki błędów, logi? Jak obsługiwać najlepiej błędy typu coś jest poza zasięgiem tablicy czy nieprawidłowy wskaźnik w bloku unsafe - Debug.Log, Debug.Assert czy throw new Exception?
BTW Co sądzicie o książce Steve McConnell Kod oskonały. Jak pisać oprogramowanie pozbawione błędów?