Программирование на JAVA
Меню :
Стартовая
Основы программирования
Программирование на JAVA
Программирование на C++
Программирование на Pascal
Задачи по программированию
Для этого достаточно создать свой класс, унаследовав его от любого наследника java.lang.Throwable (или от самого Throwable).
Пример:
public class UserException extends Exception { public UserExceptionQ { super();
}
public UserException(String descry) { super(descr);
}
}
Соответственно, данное исключение будет создаваться следующим образом:
throw new ивегЕхсерпопС'Дополнительное описание");
Переопределение методов и исключения
При переопределении методов следует помнить, что если переопределяемый метод объявляет список возможных исключений, то переопределяющий метод не может расширять этот список, но может его сужать. Усмотрим пример:
public class BaseClass{
public void method () throws lOException {
}
}
public class LegalOne extends BaseClass { public void method () throws lOException {
}
}
public class LegalTwo extends BaseClass { public void method () {
}
}
public class LegalTree extends BaseClass { public void method ()
throws EOFException.MalformedURLException {
}
}
public class IllegalOne extends BaseClass { public void method ()
throws lOException,INegalAccessException {
}
}
public class lllegalTwo extends BaseClass { public void method () {
throw new Exception();
}
}
В данном случае:
• определение класса LegalOne будет корректным, так как переопределение метода method() верное (список ошибок не изменился);
• определение класса LegalTwo будет корректным, так как переопределение метода method() верное (новый метод не может выбрасывать ошибок, а значит, не расширяет список возможных ошибок старого метода);
• определение класса LegalTree будет корректным, так как переопределение метода method() будет верным (новый метод может создавать исключения, которые являются подклассами исключения, возбуждаемого в старом методе, то есть список сузился);
• определение класса IlegalOne будет некорректным, так как переопределение метода method() неверно (lllegalAccessException не является подклассом lOException, список расширился);
• определение класса IlegalTwo будет некорректным: хотя заголовок method() объявлен верно (список не расширился), в теле метода бросается исключение, не указанное в throws.
Особые случаи
Во время исполнения кода могут возникать ситуации, которые почти не описаны в литературе.
Рассмотрим такую ситуацию:
import java.io.*; public class Test {