Dane są nastepujące definicje klas wyjątków
abstract class MathException extends ArithmeticException {
public abstract void printError();
}
class IntegerOverflowException extends MathException {
public IntegerOverflowException(String operator, int op1, int op2) { ... }
}
class DivideByZeroException extends MathException {
public DivideByZeroException(int op1) { ... }
}
Uzupełnij w/w klasy o definicje odpowiednich funkcji.
Napisz funkcje add(int, int)
, subtract(int, int)
,
multiply(int, int)
, oraz divide(int, int)
odpowiednio
dodające, odejmujące, mnożące i dzielące dwie liczby całkowite. Funkcje zwracają
wynik, a w przypadku wystąpienia przepełnienia całkowitoliczbowego lub próby
dzielenia przez 0 generują odpowiedni wyjątek z klasy MathExcep
.
Funkcja główna powinna wywołać wszystkie funkcje arytmetyczne dla kilku zestawów
argumentów (prawidłowych i powodujących błędy). W przypadku wyłapania wyjątku
program wypisuje komunikat o rodzaju błędu oraz wartości argumentów, jakie go
spowodowały.
LeaveWithChaining
, który sprawdza, czy szef
udzieli nam urlopu. Szef może nie udzielić urlopu gdy jest jeszcze dużo pracy do
wykonania lub gdy ma zły humor. Proszę wykorzystać poniższy schemat.
public class LeaveWithChaining {
public static void main(String[] args) {
try {
getLeave();
} catch(NoLeaveGrantedException e) {
e.printStackTrace();
}
}
static void getLeave() throws NoLeaveGrantedException {
try {
workToBeDone();
howIsTeamLead();
System.out.println("Leave granted");
} catch(Exception e) {
// ...
}
}
static void howIsTeamLead() throws TeamLeadUpsetException {
// throw TeamLeadUpsetException with probability 1/3
}
static void workToBeDone() throws WorkToBeDoneException {
// throw WorkToBeDoneException with probability 1/3
}
static class NoLeaveGrantedException extends Exception {
public NoLeaveGrantedException(String message, Throwable cause) {
// ctor with cause
}
}
static class TeamLeadUpsetException extends Exception {
public TeamLeadUpsetException(String message) {
// ...
}
}
static class WorkToBeDoneException extends Exception {
public WorkToBeDoneException(String message) {
// ...
}
}
}