Java: poikkeukset – throws

throws määreellä voimme jättää poikkeuksen käsittelemättä ja antaa sen käsittelyn kutsuvan metodin huolehdittavaksi. Yksittäinen metodi voi heittää useitakin poikkeuksia.

Poikkeus voi myös aiheutua syvällä käsittelyketjussa jolloin poikkeus aiheuttaa paluun ensimmäiseen sitä käsittelevään metodiin aina main luokkaan saakka. Jos main luokassa ei poikkeusta viimeistään käsitellä on seurauksena ohjelman kaatuminen. Jos jokin metodi heittää poikkeuksen, se olisi hyvä käsitellä jo sitä kutsuvassa metodissa ellei ole perusteltua syytä toimia toisin.

public int metodi() throws poikkeus1, poikkeus2 {
    // koodia
}

Toki ylläoleva metodi voi käsitellä poikkeukset itse try – catch – finally käsittelyllä, mutta tällöin throws menettää merkityksensä.

Alla pieni esimerkki, jossa metodi heittää poikkeuksen.

public class PoikkeusEsimerkki {

        // tämä metodi heittää poikkeuksen, jos stringin muutos kokonaisluvuksi ei onnistu
	public static int Str2Int(String str) throws NumberFormatException{
		int c = Integer.parseInt(str);
		return c;
	}
	public static void main(String[] args) {
                // muuttamalla näitä voit testata toimintaa
		String eka = "1";
		String toka = "e";
		try {
			System.out.println("Eka yritys: " + Str2Int(eka)); // toimii, String eka on luku
			System.out.println("Toka yritys: " + Str2Int(toka)); // aiheuttaa poikkeuksen, String toka on "e"
		} catch (NumberFormatException e) {
			System.out.println("Virhettä pukkaa." + e.toString());
		} finally {
			System.out.println("Tämä tehdään aina.");  // finally lohko on siis vapaaehtoinen
		}
	}
}

Ohjelman tulostus olisi seuraava:

Eka yritys: 1
Virhettä pukkaa.java.lang.NumberFormatException: For input string: "e"
Tämä tehdään aina.

Vastaa

Täytä tietosi alle tai klikkaa kuvaketta kirjautuaksesi sisään:

WordPress.com-logo

Olet kommentoimassa WordPress.com -tilin nimissä. Log Out / Muuta )

Twitter-kuva

Olet kommentoimassa Twitter -tilin nimissä. Log Out / Muuta )

Facebook-kuva

Olet kommentoimassa Facebook -tilin nimissä. Log Out / Muuta )

Google+ photo

Olet kommentoimassa Google+ -tilin nimissä. Log Out / Muuta )

Muodostetaan yhteyttä palveluun %s

WordPress.com.

Ylös ↑