[java] obsługa wyjątków

0

Witajcie, mam za parę dni egzamin poprawkowy z Javy, jednak niewiele miałem czasu w te wakacje, żeby się do niego przygotować i właśnie analizuję zadania, jakie pojawiły się na pierwszym terminie. Egzamin był wg mnie prosty, jednak w javie pracowałem bardzo niewiele i mam problem z rozwiązaniem następującego zadania:

  1. Należy sprawdzić co jest nietak w mainie: (wiem,że catch'e są w odwrotnej kolejności, jednak nie mam pojęcia dlaczego ma to znaczenie)
  2. i 3. proszę spójrzcie na screena, szkoda pisania, zamieszczę jedynie przepisany kod, gdyby ktoś dobry mógł go dokończyć:
    https://dl.dropbox.com/u/69022600/DSC01598.jpg
public class Wyjatek{
	
BufferedWriter out;
	/**
	 * @param args
	 */
public void metodaA(){
	int a =0;
	int b= 32/a;	
}
public void metodaB(){
	out = new BufferedWriter(new FileWriter("outfilename"));
	int a = 0;
	int b = 32 / a;
	out.write(a);
	out.write(b);
	out.close();
}
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		try {
			Wyjatek w = new Wyjatek();
			w.metodaA();
			w.metodaB();		
			}catch(ArithmeticException e){
				System.out.println(e.getMessage());
			}catch(Exception e){
				System.out.println(e.getMessage());
			}
	}

}	

 

Proszę pomóżcie, bo nie ogarnę:s

0
  1. Zamiana miejscami łapanych wyjątków wynika ze sposobu doposowywania typu wyjątku. Im bardziej ogólny wyjątek, tym "więcej" złapie. Miejsce ma znaczenie, bo dopasowanie typów leci "z góry na dół" - po catchach.
  2. "...propagowała ewentualne wystąpienie wyjątku do metody, która ją wywołuje" - W metodzie A musisz wyrzucić wyjątek. Zatem możesz naklepać coś w stylu:
if (a == 0)
throw new ArithmeticException("Nie dziel przez zero..."); 
  1. Tutaj musisz dać blok try...catch + finally z zamykaniem strumienia.

Anyway.... dr inż. B. Jankowska?

0

Czaje, juz rozkminiłem resztę.
Owszem, a co kolega też z PP?:p

1 użytkowników online, w tym zalogowanych: 0, gości: 1