자바의 파일 입출력 문제입니다...

sadrove의 이미지

A.java 파일의 내용입니다..

-----------생략----------
public class A extends JFrame
{
	public xxx(){
		-----------생략----------
		B mf = new B("test.txt");

	}
	-----------생략----------
}
-----------생략-----------

B.java 파일의 내용입니다..

public class B{
	
	BufferedReader getTxtFileReader(String filename) 
    		throws IOException, FileNotFoundException { 
		return new BufferedReader(new InputStreamReader(new FileInputStream(filename))); 
	}
	
	public B(String title, String owlFileName)
  		throws IOException, FileNotFoundException  {
		super(title);
		
		String l = new String(); 
		BufferedReader r = getTxtFileReader("test.txt"); 
		while (  (l=r.readLine()) != null ) 
		    System.out.println(l);
	}
-----------생략------------
}

위와 같이하면..이클립스에서..
B mf = new B("test.txt");
이 부분에 아래와 같은 메세지가 뜹니다..

Quote:

Multiple markers at this line
-Unhandled exception type FileNotFoundException
-Unhandled exception type IOException

B.java에서 throws IOException, FileNotFoundException 를 해주었는데 왜 그런건가요..?
B 객체를 생성하는 부분마다 모두 throws IOException, FileNotFoundException를 해주어야하는걸까요..?
파일 하나 읽기도 힘드네요..^^
도움 부탁드립니다.[/code]
feanor의 이미지

sadrove wrote:

B.java에서 throws IOException, FileNotFoundException 를 해주었는데 왜 그런건가요..? B 객체를 생성하는 부분마다 모두 throws IOException, FileNotFoundException를 해주어야하는걸까요..?

네, 그렇습니다.

--feanor

카二리의 이미지

throws IOException, FileNotFoundException

바로 처리하지 않으려고 던지셨으면 받아도 주셔야죠~ :twisted:

 B mf = new B("test.txt");

이걸
try{
        B mf = new B("test.txt");
}catch(IOException e){
궁시렁~
}

으로 고쳐 주세요~
(노파심에서.. FileNotFoundException은 IOException을 상속하니깐 IOException만 잡아도 됩니다~)

새 생각 :)

sadrove의 이미지

두분 답변 감사드립니다...
한가지만 더..^^...
알려주신대로 수정해서 되긴 됐는데요....
소스에 액션 리스너가 있거든요...
여기엔 throws IOException을 어느부분에 넣어야 하는건지...

		xxOpenItem.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent ae) {
--------------------생략----------------------
B mf = new B("test.txt");
--------------------생략----------------------

			}	
		});

여기서 이벤트가 일어나면 B를 생성해야 하거든요...
처음과 같은 문제가 일어나네요.... :cry:
점심 맛있게 드세요... :wink:

카二리의 이미지

public void actionPerformed(ActionEvent ae) throws IOException{
    mf = new B("test.txt"); 
}
public void actionPerformed(ActionEvent ae){
    try{
        mf = new B("test.txt"); 
    }catch(IOException e){
    }
}

둘중 하나겠죠

새 생각 :)

sadrove의 이미지

두번째 방법으로 하니까 되네요..
감사합니다..

카二리의 이미지

public void actionPerformed(ActionEvent ae) throws IOException{
    mf = new B("test.txt");
} 

이건 틀린 예 입니다. 죄송;

새 생각 :)

vuccell의 이미지

자바로 이것저것 exception처리하기 귀찮으면
main전체에
try{
} catch (Exception e) {

}

하시면 모든 exception을 다 잡으니까.. 저런 컴파일에러는 안 나는듯... 단점은... 뭔 exception인지 알수가 없어서 -,-;;;; java를 C처럼 코딩해야하는.. 움훼훼훼

자바못하는... 글타고 C를 잘하는것도 아닌...

쿠크다스의 이미지

vuccell wrote:
자바로 이것저것 exception처리하기 귀찮으면
main전체에
try{
} catch (Exception e) {

}

하시면 모든 exception을 다 잡으니까.. 저런 컴파일에러는 안 나는듯... 단점은... 뭔 exception인지 알수가 없어서 -,-;;;; java를 C처럼 코딩해야하는.. 움훼훼훼

자바못하는... 글타고 C를 잘하는것도 아닌...


printStackTrace 메쏘드 쓰면....

또는 main 메쏘드 시그내쳐에 throws Exception을 넣어도 됨.

과자가 아닙니다.
cuckoo dozen, 즉.12마리의 뻐꾸기란 뜻입니다.