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