public class AnimalException extends Exception {
public AnimalException(String error) {
super(error);
}
}
public class Zoo {
private String animal;
private String food;
public Zoo (String animal, String food) throws AnimalException {
this.animal = animal;
if (findWord(animal, "wolf")) {
throw new AnimalException("This animal is a predator.");
//something ought to be done here, I reckon
}
else {
this.food = food;
}
}
public static boolean findWord(String word, String find) {
int total = 0;
int idx = 0;
while ((idx = word.indexOf(find, idx))!= -1) {
total++;
idx++;
}
if (total == 0) {
return false;
}
else {
return true;
}
}
Điều tôi muốn làm là khi số wolf
bị bắt trong hàm tạo giá trị cho food
được tự động thay đổi thành thứ khác. Tôi đã thử sử dụng getter-setters
, tuy nhiên, tôi nhận được lỗi của unreachable code
. Tôi phải làm gì?Ghi ngoại lệ trong hàm tạo
Mã của bạn gặp sự cố ở đâu? –
Ném một ngoại lệ thường có nghĩa là "hoảng sợ và thoát khỏi mã này ngay lập tức ngay từ đây, để lại những thứ như bị hỏng như họ đang ở thời điểm này". Đặc biệt, khi ném từ một hàm tạo, kết quả của toán tử 'new' sẽ không thể sử dụng được, vì luồng mã bị gián đoạn bởi ngoại lệ. Bạn ném ngoại lệ khi bạn gặp một trạng thái mà bạn không thể hoặc không muốn xử lý. Bạn có chắc đó là những gì bạn muốn làm ở đó không? – Wormbo
Ném ngoại lệ không phải là cách tốt nhất để giao tiếp với người dùng. – zubergu