Przykład z "Rusz głową. Java"

0

class MojEx extends Exception{}
public class ExTester {

public static void main(String [] args) {
    String test = args[0];
    try {
        System.out.println("p");
        zaryzykuj(test);
        System.out.println("a");
    }catch (MojEx e) {
        System.out.println("a");
    }finally {
        System.out.println("n");
    }
    System.out.println("a");
}
static void zaryzykuj(String t) throws MojEx {
    System.out.println("i");
    if ("tak".equals(t)){
        throw new MojEx();
    }
    System.out.println("j");
}

}

Pytanie 1: Co tu jest nie tak? Powino sie kompilować a wywala:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0
at ExTester.main(ExTester.java:6)
Pytanie 2: Co oznacza : "String test = args[0];" w powyższym kodzie?

1

Ale przecież to oznacza że się skompilowało i rzuciło wyjątek :D

3
  1. Kompiluje się, błąd który otrzymujesz to wynik uruchomienia programu
  2. To jest odczyt argumentu przekazanego do programu, ty nie przekazujesz żadnego więc tablica jest pusta => nie zawiera elementu, który chcesz odczytać -> leci wyjątek, który Cię o tym informuje
    Jakiego IDE używasz? Intellij? Jak tak to: https://www.google.com/search?q=how+to+pass+program+arguments+in+intellij&oq=how+to+pass+program+arguments+in+intellij&aqs=chrome..69i57j0l4.4239j0j7&sourceid=chrome&ie=UTF-8
0

W pierwszej linii (wewnątrz main) dodaj:

if (args.length < 1) throw new Exception("Invalid data!!! RTFM!");

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.