Wyjątki
Wyjątki są mechanizmem, za pomocą którego Java obsługuje błędy wykonania programu oraz rozmaite „wyjątkowe” sytuacje.
Wyjątek jest zdarzeniem, które występuje podczas wykonania programu i zakłóca jego normalne działanie.
Do obsługi wyjątków używana jest instrukcja try … catch w postaci: try
{
instrukcje
}
catch ( specyfikacja_klasy_wyjatku )
{
instrukcje
}
finally
{
instrukcje
}
Podstawy programowania
Materiały do użytku wewnętrznego
8.1
Wyjątki - przykład
BufferedReader czytanie = new BufferedReader( new InputStreamReader( System. in ) ); System. out.println( "Wprowadz liczbę:" ); try
{
String linia = czytanie.readLine();
int i = Integer. parseInt( linia );
float iloraz = 100 / i;
System. out.println( "Wynik dzielenia: " + iloraz );
}
catch ( IOException e ) {
System. out.println( "BŁĄD odczytu strumienia!!!" );
}
catch ( NumberFormatException e ) {
System. out.println( "BŁĄD konwersji do int!!!" );
}
catch ( ArithmeticException e ) {
System. out.println( "BŁĄD dzielenia przez ZERO!!!" );
}
catch ( Exception e ) {
System. out.println( "BŁĄD inny niz wszystkie!!!" );
}
finally {
System. out.println( "KONIEC działania programu." );
}
}
Podstawy programowania
Materiały do użytku wewnętrznego
8.2
Zgłaszanie wyjątków (1/3)
public class KontoBankowe
{
private static int maxID = 0; int kontoID;
double stanKonta;
KontoBankowe( double stanPoczatkowy )
{
stanKonta = stanPoczatkowy;
kontoID = ++ maxID;
}
public void Pobierz( double kwota ) throws NiskiStanKontaException
{
if ( stanKonta < kwota )
throw new NiskiStanKontaException( this, kwota ); else
stanKonta -= kwota;
}
}
Podstawy programowania
Materiały do użytku wewnętrznego
8.3
Zgłaszanie wyjątków (2/3)
public class NiskiStanKontaException extends Exception
{
KontoBankowe konto;
double kwota;
NiskiStanKontaException( KontoBankowe konto, double kwota )
{
super( "Zbyt niski stan konta!" );
this.konto = konto;
this.kwota = kwota;
}
public String toString()
{
StringBuffer Bufor = new StringBuffer();
Bufor.append( "BŁĄD wyplaty dla konta " + konto.kontoID ); Bufor.append( "\n Stan konta: " + konto.stanKonta ); Bufor.append( "\nPodejmowano: " + kwota );
return Bufor.toString();
}
}
Podstawy programowania
Materiały do użytku wewnętrznego
8.4
Zgłaszanie wyjątków (3/3)
public class Bankier
{
public static void main(String[] args)
{
try
{
KontoBankowe Konto = new KontoBankowe( 500.00 ); Konto.Pobierz( 100.00 );
System. out.println( "Wypłata 100 jednostek zakończona powodzeniem!" ); Konto.Pobierz( 600.00 );
System. out.println( "Wypłata 600 jednostek zakończona powodzeniem!" );
}
catch ( Exception e )
{
System. out.println( e.toString() );
}
}
}
Podstawy programowania
Materiały do użytku wewnętrznego
8.5