Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > Использование собственных исключений на Java


Автор: Golovastik 13.12.2010, 01:37
1)Скажите, зачем нужны собственные исключения?
2)Попробовал написать собственное исключение,оно не хочет работать, работает только стандартное исключение, почему так?
Вот этот код работает со стандартным исключением:
Код

package javaapplication3;
class MyException extends ArrayIndexOutOfBoundsException{

public MyException() {}
public MyException(int i){
super("Выход за пределы массива при индексе="+i);
}

}

public class Main{
public static void main (String []  args)  {
    try{
   int [] mas={1,2,3,4,5,6,7,8,9,10};
   for(int i=0; i<100; i++)
   {
    if( i < 0 || i >=10)
     throw  new MyException(i); //генерируем наше  исключение
    System.out.println(mas[i]);
       System.out.println(mas[-1]);
        
   }
    }catch(ArrayIndexOutOfBoundsException e){
        System.out.println(e.getMessage()+"\nОшибка");
    }
}
}


Если написать так:

Код

package javaapplication3;
class MyException extends ArrayIndexOutOfBoundsException{

public MyException() {}
public MyException(int i){
super("Выход за пределы массива при индексе="+i);
}

}

public class Main{
public static void main (String []  args)  {
    try{
   int [] mas={1,2,3,4,5,6,7,8,9,10};
   for(int i=0; i<100; i++)
   {
    if( i < 0 || i >=10)
     throw  new MyException(i); //генерируем наше  исключение
    System.out.println(mas[i]);
       System.out.println(mas[-1]);
        
   }
    }catch(MyException e){
        System.out.println(e.getMessage());
    }
}
}


Вываливается ошибка:
Код

run:
1
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: -1
        at javaapplication3.Main.main(Main.java:20)
Java Result: 1
BUILD SUCCESSFUL (total time: 0 seconds)


А как же тогда собственные исключения использовать, если только со стандартным работает?

Автор: mstalker26 13.12.2010, 01:51
Тебе Temdegon, в этой теме написал как свои исключения бросать
http://forum.vingrad.ru/index.php?showtopic=317574&view=findpost&p=2265259
Зачем новую тему создавать?

Автор: Temdegon 13.12.2010, 02:31
Ваш код работает именно так, как он должен работать. Если вы ожидаете от него какого-то другого поведения, то опишите подробно, что вам нужно.
В строке 20 в первой итерации цикла возникает ArrayIndexOutOfBoundsException, которое вы не обрабатываете. Если вы ожидаете, что ваш catch(MyException e) будет реагировать на на ArrayIndexOutOfBoundsException, то это не так.
Собственные исключения нужны для того же, для чего и собственные классы.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)