Как писать исключения (класс x выдает y)

У меня есть код, который запускает короткую серию тестов, чтобы увидеть, является ли последний элемент в массиве ожидаемым числом. Код, который я должен ввести, находится там, где в данный момент находится [???].

   //The answer must be the shortest possible
class EmptyArrayException extends RuntimeException{}
class ArrayUtil{
  public static Object lastElement (Object[]array)[???]{
    if(array.length>0)return array[array.length-1];
    throw new EmptyArrayException();
  }
}
public class Exercise{
  public static void test(){
    assert ArrayUtil.lastElement(new Integer[]{1,2,3}).equals(3);
    assert ArrayUtil.lastElement(new Integer[]{1,2}).equals(2);
    assert ArrayUtil.lastElement(new Integer[]{1}).equals(1);
    assert ArrayUtil.lastElement(new Integer[]{}).equals(1);
    assert false:"Code not reachable";
  }
  public static void main(String [] arg){
    try{ test();}
    catch(Throwable t){/*the test suit
      logs t on the test results: 
      a single place for error logging.*/}
  }
}

Я предполагаю, что напишу ' throws EmptyArrayException ', но это неправильно. ' throws EmptyArrayException()' тоже неверно.

Итак, что мне вставить в пространство [???]?


person user3677898    schedule 27.05.2014    source источник
comment
Если тип исключения является подтипом RuntimeException, вам не нужно указывать его в предложении throws.   -  person Dawood ibn Kareem    schedule 28.05.2014
comment
Что вы имеете в виду под неправильным? Возможно, вы окружили throws EmptyArrayException [ ]?   -  person Pshemo    schedule 28.05.2014
comment
throws EmptyArrayException - правильный синтаксис. Что вы имеете в виду, но это неправильно? Вы получаете ошибку компилятора?   -  person azurefrog    schedule 28.05.2014
comment
Как можно короче? Ничего. Вы бы ничего туда не положили. Если бы вы не выдавали исключение RuntimeException, вам потребовалось бы предложение throws.   -  person Elliott Frisch    schedule 28.05.2014


Ответы (1)


Поскольку ваше исключение - RuntimeException, вам не нужно ничего указывать. Однако вы можете. Иногда я делаю это, чтобы задокументировать, что такой метод может вызвать определенное исключение.

public static Object lastElement (Object[]array) throws EmptyArrayException 

Это тебе решать.

person Claudio    schedule 27.05.2014
comment
Почему ответ почти всегда прост? - person user3677898; 29.05.2014