Nếu tôi đã có những chức năng dưới đây, với hai lựa chọnNém một ngoại lệ hoặc trả về null
private MyObject findBlank() {
for (int i = 0; i < pieces.length; i++) {
if(pieces[i].isBlank()){
return pieces[i];
}
}
return null;
}
private MyObject findBlank() {
for (int i = 0; i < pieces.length; i++) {
if(pieces[i].isBlank()){
return pieces[i];
}
}
throw new NoSuchFieldError("No blank piece found!");
}
Từ phương pháp này, tôi biết rằng nó nên luôn trả về một đối tượng một trong những 'mảnh' luôn luôn là isBlank() == true
, null trả về ở cuối là chỉ để làm hài lòng trình biên dịch. Vì đây là trường hợp và mã của tôi sẽ không hoạt động anyway nếu nó trả về null, đây có phải là chính xác xin vui lòng để ném một ngoại lệ?
lựa chọn của tôi là:
- trở lại null và ứng dụng sẽ nhận được một NullPointerException trong một số trường hợp cạnh
- trở lại vô quấn việc sử dụng phương pháp này với kiểm tra
- (myObject = null!) ném một ngoại lệ sẽ phát nổ khi chạy
Tôi đoán điều tôi đang hỏi là, đây có phải là địa điểm chính xác để ném ngoại lệ không? tức là tôi không thể làm gì nếu nó rơi vào tình huống. Điều này được phân loại là 'ngoại lệ' hay tôi không nên kiểm tra xem phương thức của tôi trả về (cái gì làm cho mã của tôi trông khủng khiếp). Nếu tôi biết nó không nên trả về null thì tôi nên ném ngoại lệ phải không?
Tôi cũng làm cách nào để chọn ngoại lệ, hoặc mở rộng một và ném của riêng mình?
Để giúp chọn ngoại lệ: http://wuhrr.wordpress.com/2007/11/22/java-exceptions-list/ – Blundell
Đề xuất "không" có hấp dẫn không? :-) – missingfaktor
@missingfaktor Tôi đang viết mã trong Android nên không thể mang theo các khung công tác nặng khác – Blundell