Strona 1 z 1

[Java] Obsługa wyjątków

: 10 lut 2011, 12:10
autor: bulva
Mam następująca metodę wyrzucającą RuntimeException:

Kod: Zaznacz cały

	public static int getIntegerNodeAttribute(Node node, String attributeName) {
		if (node.getAttribute(attributeName) == null) {
			throw new RuntimeException("Attribute, " + attributeName
					+ ", missing from node");
		}
		return (Integer) node.getAttribute(attributeName);
	}
Następnie wywołuję ją w pewnej klasie X, która ma blok try-catch z instrukcją throw, aby przekazać wyjątek dalej:

Kod: Zaznacz cały

			} catch (Exception e) {

				e.printStackTrace();
				throw new RuntimeException("FUBAR!", e);
			}
Ta klasa jest z kolei wywoływana w GUI, które powinno pokazywać wyjątek w małym terminalu:

Kod: Zaznacz cały

			catch (RuntimeException e2) {
				textArea.setText("Attribute missing from node");
			}

			catch (Exception e1) {
				textArea.setText("Could not generate!");
			} 
Cały ten misterny plan jednak nie działa, ponieważ gui nic nie wyświetla, program chodzi sobie w najlepsze mimo iż konsola wyraźnie pokazuje
java.lang.RuntimeException: Attribute, location_80%HPD_modality, missing from node
Czyli wyjątek z klasy X nie jest dalej przekazywany, skoro blok catch w gui go nie wychwytuje. Czemu?

Odp: [Java] Obsługa wyjątków

: 11 lut 2011, 11:43
autor: michal12345
O ile pamiętam nie można wyrzucać wyjątków w bloku catch.