2011-08-16 5 views
4

나는 열거하고 분석 할 파일 목록을 포함하는 벡터를 가지고 있으며, 필자의 경우 최선의 선택이 무엇인지 궁금해하고 있었다.자바에서 캐치를 시도하기위한 최선의 선택

내가하고 시작한 일이 :

for (int i =0 ; i< files.size() ; i++) 
{ 
    System.out.println("n°" + i + " : " + files.elementAt(i)); 
    try 
    { 
     // open the files 
    } 
    catch (Exception e) { 
    // TODO: handle exception 
    } 
} 

또는 당신은이 일에 대해 어떻게 생각하십니까?

try 
{ 
    for (int i =0 ; i< files.size() ; i++) 
    { 
     System.out.println("n°" + i + " : " + files.elementAt(i)); 
     // open the files  
    } 
} 
catch (Exception e) { 
    // TODO: handle exception 
} 

감사

EDIT:

My purpose is that, when I try to open a file that doesn't exist I must throw something or maybe write the exception in a log file and continu opening the other files.

->

그래서 나는 최초의 솔루션 내 cituation에서 최고라고 생각?

+0

왜 2011 년에'벡터'를 사용하고'목록'또는'세트'를 사용하지 않습니까? –

+0

가능한 복제본 [시도해야 ... 루프 내부 또는 외부에 끼어들 수 있습니까?] (http://stackoverflow.com/questions/141560/should-try-catch-go-inside-or-outside-a-loop) –

+0

String을 그냥 저장하는 경우 Vector를 사용할 때의 문제점은 무엇입니까? –

답변

3

나는 첫 번째 파일과 같이 갈 것입니다. 예를 들어 파일 7이 손상되면 8-10 (또는 무엇이든)의 데이터를 얻을 수 있습니다. 그리고 그들이 모두 부패하더라도, 당신은 아무것도 잃지 않습니다.

애플리케이션이 어떻게 작동해야하는지 생각해 보겠습니다. 하나의 파일이 잘못되면 모든 것이 멈추게됩니다. 두 번째 파일이 더 적합하지만 일반적으로 첫 번째 파일이 더 유용 할 것입니다.

2

나는 첫 번째가 더 좋다고 생각한다. 장점은 한 파일에 예외가 있으면 여전히 다른 파일을 파싱한다는 것이다.

두 번째 옵션은 맞지 않습니다. 예외가 발생하면 루프에서 벗어납니다.

0

동일하지 않습니다!

첫 번째 경우 예외를 발견하면 다음 반복이 발생합니다. 두 번째 경우에는 Exception을 잡으면 다음 반복이 없습니다!

0

모든 것은 달성하고자하는 것에 달려 있습니다. 모든 파일을 시도하려면 첫 번째 옵션을 선택해야합니다. 오류가 하나 이상 발생하는 경우에 대비하여 초를 사용하는 것이 좋습니다.

0

두 번째 시도는 try/catch를 여러 번 입력하고 나가는 오버 헤드를 피할 수 있지만 첫 번째 동작과는 다릅니다. 한 파일에 오류가있는 경우 첫 번째 경우는 나머지 파일을 계속 시도 할 수 있습니다. 두 번째 경우에는 모든 추가 처리가 종료됩니다.

당신이 사용하는 방법은 당신이 원하는 행동을 전적으로 기초로해야합니다.

0

주의 사항 : 이것들은 동일하지 않습니다! 파일 중 하나가 실패하면 첫 번째 양식 (루프 본문에 try/catch 포함)이 있으면 다른 파일을 처리 할 수 ​​있고 두 번째 양식은 다른 파일을 포기하게됩니다.

먼저 필요한 기능에 중점을 둡니다.

... try/catch는 약간의 오버 헤드가 발생하므로 두 번째 형식이 조금 빨라지지만 초기 파일이 실패 할 경우 나머지 파일을 열 수없는 비용이 발생합니다.

0

당신이하고 싶은 일에 전적으로 달려 있습니다.첫 번째 예제에서는 파일 6, 7, 8로 계속됩니다 ...

두 번째 예제에서는 두 번째 대안은 파일이 실패 할 때까지 계속됩니다 , 그 후에 그것은 포기한다. 원하는 행동을 알고 있다면 선택할 수있는 행동을 알고 있어야합니다.

0

옵션 1 :

이 모든 파일을 열 경우에도 하나 (또는 ​​복수의) 원인 예외를 시도 할 것이다.

옵션 2 :

이 단일 파일이 예외를 발생하는 경우 파일을 열려고 시도 중지됩니다. 첫 번째 옵션로 이동하거나 경우 모든 파일은 올바른 작동에 필요한 - - 당신이 한 경우 파일이 실패한다고 가정 할 경우

, 모두 실패합니다 첫 번째 옵션과 함께 할 것입니다,하지만 경우 당신이 원하는 가능한 많은 파일을로드 - 두 번째 옵션으로 이동하십시오.

관련 문제