2011-07-21 26 views
6

Mã hoạt động tốt cho đến khi tôi cố gắng tạo mã thành lớp có thể cấu hình được. Khi tôi cố gắng để xây dựng một đối tượng từ nó tôi nhận được lỗiKhi xây dựng hàm khởi tạo mặc định không thể xử lý ngoại lệ: loại Ngoại lệ được ném bởi hàm tạo siêu ngầm

"constructor mặc định không thể xử lý ngoại lệ kiểu IOException ném bởi constructor siêu ngầm. Phải xác định một constructor rõ ràng"

Đây là thời điểm cần phải ném ngoại lệ cho FileReaderBufferedReader.

Cảm ơn

EDIT:

FileReader textFilethree = new FileReader (xFile); 
BufferedReader bufferedTextthree = new BufferedReader (textFilethree) ; 
String lineThree = bufferedTextthree.readLine(); 

Các xFile được nhận từ việc xây dựng. Lưu ý rằng trong trường hợp ngoại lệ xây dựng này được ném.

Trả lời

6

Trình tạo mặc định ngầm ngầm gọi hàm dựng siêu được giả định là ném một số ngoại lệ mà bạn cần xử lý trong hàm tạo của lớp con. cho câu trả lời chi tiết gửi mã

class Base{ 

    public Base() throw SomeException{ 
    //some code 
    } 

} 

class Child extends Base{ 
    public Child(){ 
    //here it implicitly invokes `Base()`, So handle it here 
    } 
} 
+0

Đây là mã có liên quan. chỉnh sửa: whoops – Ian

+0

Nhập mã vào bài đăng – Ian

+1

bạn cần thêm số liên kết của construtor –

3

class Base super.constructor được ngầm gọi bởi các nhà xây dựng lớp học kéo dài:

class Base 
{ 
    public Base() throws Exception 
    { 
    throw <>; 
    } 
} 

class Derived extends Base 
{ 
    public Derived() 
    { 
    } 
} 

Bây giờ, người ta cần phải xử lý các ngoại lệ bên trong Derived() hoặc làm cho các nhà xây dựng như,

public Derived() throws Exception 
{ 
} 

Bất cứ phương pháp bạn new lên đối tượng của Derived, hoặc là bạn đặt nó bên trong try-catch hoặc làm cho phương pháp đó ném Exception như trên. [Lưu ý: đây là mã giả]

+0

Tôi đang suy nghĩ về sai lầm về quên về lỗi ide, tôi chạy nó và nó đã được sử dụng tốt. Tôi sẽ gặp sự cố sau này nếu tôi làm điều này? – Ian

-1

Bất kỳ lớp con mà kéo dài một lớp siêu mà constructor mặc định xử lý một số ngoại lệ, một lớp con phải có một constructor mặc định mà thực hiện ngoại trừ

lớp siêu { công siêu() ném ngoại lệ {}}

lớp Sub mở rộng Super {public Sub() ném ngoại lệ {//}}

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