Да, вы вызываете исключение в конструкторе.
В java вы обычно выбрасываете IllegalArgumentException
, если один из аргументов был неправильным, что на самом деле обычно делают в качестве защитного выражения:
public class Roman {
public Roman(int arabic) {
// "Guard statement" in the beginning of the constructor that
// checks if the input is legal
if (arabic < 0) {
throw new IllegalArgumentException("There are no negative roman numerals");
}
// Continue your constructor code here
}
}
Если вам не нужны исключения, вы можете сделать как ответ GavinCatelli и создать фабричный метод, который возвращает ноль, если объект не будет «правильным».
public class RomanFactory {
public static Roman getSafeRoman(int a) {
Roman r;
try {
r = new Roman(a);
} catch(IllegalArgumentException e) {
r = null;
}
return r;
}
}
Тем не менее, вы должны проверить наличие нулевых значений, иначе программа может аварийно завершить работу с NullPointerException.