Я стверджую, що очевидним способом побачити, чи змінив значення зміна значення, було б передача та перевірка результату. Я б, однак, усунув би непотрібний склад при порівнянні. Я також не дуже захоплююсь назвами змінних однієї літери (виняток x
і y
, але не тоді, коли вони означають рядок і стовпець (іноді відповідно)).
public static int intValue(long value) {
int valueInt = (int)value;
if (valueInt != value) {
throw new IllegalArgumentException(
"The long value "+value+" is not within range of the int type"
);
}
return valueInt;
}
Однак дійсно я хотів би уникнути цього перетворення, якщо це можливо. Очевидно, що іноді це неможливо, але в тих випадках IllegalArgumentException
майже напевно неправильним винятком є кидання, що стосується клієнтського коду.