2012-04-01 31 views
9

Được coi là chương trình xấu để viết thử và nắm bắt trong một mệnh đề cuối cùng?cố gắng nắm bắt ở phần cuối cùng

Tôi đang có phương thức chính là fileInputStream mà tôi muốn đóng. Tôi muốn đặt dấu .close() vào cuối cùng, vì vậy nó sẽ đóng lại không có vấn đề gì. Tôi không muốn thêm tuyên bố ném vào phương thức chính vì nó là phương thức chính: P

}finally{ 
     try { 
      commandFile.close(); 
     } catch (IOException e) { 
      throwException(e); 
     } 
    } 

OK? Cảm ơn

+8

Có điều này là OK và đôi khi cần thiết. –

+1

Nếu bạn chỉ cần tính toán lại ngoại lệ, bạn không cần thử. Việc thử bắt là cần thiết bởi vì bạn có nghĩa vụ phải làm một cái gì đó với ngoại lệ (ở mức tối thiểu, đăng nhập nó), nếu bạn quyết định không thì không cần thiết. – SJuan76

+0

Tôi cần in một thứ gì đó vào System.err và sau đó System.exit Đó là phương thức throwExcpetion (e) hiện –

Trả lời

9

Mô hình cần thử/bắt trong các phương thức cuối cùng không may là một mẫu lặp lại trong Java 6 và trước đó. Tôi cho rằng nó thực sự là một thực hành tồi, nhưng không phải là thực tế bạn có thể tránh được trong Java 6 (xem dưới đây cho Java 7).

Một vấn đề nữa là bất kỳ ngoại lệ mới nào được ném vào khối cuối cùng sẽ ghi đè các ngoại lệ đã được ném trước khi đến khối này.

Trong Java 7, đặc biệt cho các trường hợp tài nguyên cần được đóng (phần lớn các trường hợp sử dụng cho các cấu trúc try/finally/try/catch) cấu trúc try-with-resources mới. Điều này cũng sẽ nắm bắt cả hai trường hợp ngoại lệ chính và phụ.

Sử dụng cấu trúc này giờ đây là thực hành tốt nhất trong JDK 7 và có, mã bạn hiển thị là một thực tiễn không tốt trong Java 7.

+0

Tôi có nghĩa vụ chỉ sử dụng Java 6. trường chưa được chấp thuận là 7. –

Các vấn đề liên quan