Exception hibaüzenet

Exception hibaüzenet
2019-04-13T08:18:47+02:00
2019-04-13T10:29:38+02:00
2022-10-15T21:31:38+02:00
HuserB8919
Sziasztok! 

Olvasom az Agyhullam Java c. könyvet és van benne egy kódrészlet ami a kivétlkezelésről szól. Nekem a kód futtatáskor 'ArrayIndexOutOfBoundsException' hibaüzenetet dob pedig le kéne futnia rendesen. Van ötletetek mi lehet a baj? 

package extestdrive; class MyEx extends Exception {} public class ExTestDrive { public static void main(String[] args) { String test = args[0]; try { System.out.print("t"); doRisky(test); System.out.print("o"); } catch (MyEx e) { System.out.print("a"); } finally { System.out.print("w"); } System.out.print("s"); } static void doRisky(String t) throws MyEx { System.out.print("h"); if ("no".equals(t)) { //change it for "yes" and run it again throw new MyEx(); } System.out.print("r"); } }
Mutasd a teljes hozzászólást!
Nem adtál a programnak parancssori argumentumot. Így az args tömb 0 hosszúságú, és hibát dob, amikor a nem létező nulladik elemet próbálja elérni a kód.

Éles kódban ezt úgy szokás megoldani, hogy ellenőrzi a kód az args.length-et, és ha kisebb, mint elvárt, akkor kilép a program egy használati utasítás kiírása után.
Mutasd a teljes hozzászólást!

  • Köszönöm a gyors segítséget. Végül így oldottam meg kicsit átalakítva. Így gondoltad te is nagyjából ugye?

    class MyEx extends Exception {} public class ExTestDrive { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.print("Yes or No: "); String test = sc.nextLine(); try { System.out.print("t"); doRisky(test); System.out.print("o"); } catch (MyEx e) { System.out.print("a"); } finally { System.out.print("w"); } System.out.print("s"); } static void doRisky(String t) throws MyEx { System.out.print("h"); if ("yes".equals(t)) { throw new MyEx(); } System.out.print("r"); } }
    Mutasd a teljes hozzászólást!
  • Egyáltalán nem így gondolta.
    Hanem parancssorból lehetett volna megadni a hiányzó argumentumot így:

    java extestdrive.ExTestDrive no
    ahol a no-ból lesz az args[0].
    Vagy ugyanezt az IDE-k Run (vagy hasonló) menüjében Run configuration (vagy hasonló) pont alatt lehet beállítani.
    Mutasd a teljes hozzászólást!
  • Köszönöm szépen, sikerült. Most tanítottál valami újat :)
    Mutasd a teljes hozzászólást!
Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd