Tôi đang gặp một chút rắc rối khi triển khai phương pháp sau trong khi xử lý 3 ngoại lệ mà tôi phải lo. Tôi có nên bao gồm các khối thử/nắm bắt như tôi đang làm hay là để lại cho ứng dụng thay vì thiết kế lớp?Phương thức xử lý ngoại lệ Java
Phương pháp này nói rằng tôi là nghĩa vụ phải thực hiện điều này:
public Catalog loadCatalog(String filename)
throws FileNotFoundException, IOException, DataFormatException
Phương pháp này sẽ tải thông tin từ các kho lưu trữ theo quy định tại một cửa hàng của các sản phẩm và trả về danh mục.
Bắt đầu bằng cách mở tệp để đọc. Sau đó, nó tiến hành đọc và xử lý từng dòng của tệp.
Phương pháp String.startsWith
được sử dụng để xác định kiểu dòng:
- Nếu loại đường là "sản phẩm", phương pháp readProduct được gọi.
- Nếu loại dòng là "Cà phê", phương thức readCoffee được gọi.
- Nếu loại dòng là "Brewer", phương thức readCoffeeBrewer được gọi.
Sau khi dòng được xử lý, loadCatalog
thêm sản phẩm (sản phẩm, cà phê hoặc bia) vào danh mục sản phẩm.
Khi tất cả các dòng của tệp đã được xử lý, loadCatalog
trả về Danh mục sản phẩm theo phương thức thực hiện cuộc gọi.
Phương pháp này có thể ném ngoại lệ sau:
FileNotFoundException
- nếu các tập tin được chỉ định không tồn tại.IOException
- Nếu có lỗi khi đọc thông tin của tệp được chỉ định.DataFormatException
- nếu một dòng có lỗi (ngoại trừ phải bao gồm các dòng có dữ liệu sai)
Dưới đây là những gì tôi có cho đến nay:
public Catalog loadCatalog(String filename)
throws FileNotFoundException, IOException, DataFormatException{
String line = "";
try {
BufferedReader stdIn = new BufferedReader(new FileReader("catalog.dat"));
try {
BufferedReader input = new BufferedReader(
new FileReader(stdIn.readLine()));
while(! stdIn.ready()){
line = input.readLine();
if(line.startsWith("Product")){
try {
readProduct(line);
} catch(DataFormatException d){
d.getMessage();
}
} else if(line.startsWith("Coffee")){
try {
readCoffee(line);
} catch(DataFormatException d){
d.getMessage();
}
} else if(line.startsWith("Brewer")){
try {
readCoffeeBrewer(line);
} catch(DataFormatException d){
d.getMessage();
}
}
}
} catch (IOException io){
io.getMessage();
}
}catch (FileNotFoundException f) {
System.out.println(f.getMessage());
}
return null;
}
cảm ơn cho mảnh lớn của tư vấn, họ sẽ thốt lên một kỹ thuật thiết kế tốt hơn để ném chỉ có 1 ngoại lệ để xử lý tất cả trong số họ. Ill cho nó một shot từ bây giờ. Tuy nhiên, tôi quên đề cập đến bài tập đặc biệt này (đối với trường học) tôi phải thực hiện phương pháp chính xác như được mô tả bởi vì sau đó tôi phải làm cho nó chạy thông qua một ứng dụng Tesfile được tạo trước và đảm bảo nó biên dịch. – edu222