2014-02-13 2 views
3

필드에 값을 할당하는 유틸리티 클래스에 정적 메서드가 있습니다.던지고 예외 또는 반환 및 오류 메시지

내 방법의 cutdown 버전은 다음과 같습니다

public static void assignValue(String field, String valueToAssign){ 
    ... 
    //code to do assign 
} 

나는 현재 예외를 발생하고 오류가 있으면 내가 루프에서 assignValue를 호출하고 내가 원하기 때문에 그것이 올바른 접근 방식 인 경우 그러나 나는 확실하지 오전 예외가 있어도 루프가 계속됩니다. 그래서 잠재적으로 많은 예외는

for(int i = 0; i < assignmentList.size(); i++){ 
try{ 
    assignValue(assignmentList.get(i).fieldName, assignmentList.get(i).fieldValue); 
    }catch(AssignmentFailedException e){ 
     errorlist.add(e.getMessage()); 
    } 
} 
} 

을 던져 질 수겠습니까 더 잘 assignValue 오류 메시지 대신 예외를 반환하는 경우 더 나은? 나는 그 오류를 저장하고 목록이 나는 방법을 바꾸어야합니다

for(int i = 0; i < assignmentList.size(); i++){ 
String errorMessage = assignValue(assignmentList.get(i).fieldName, assignmentList.get(i).fieldValue); 
if(errorMessage != ""){ 
    errorlist.add(errorMessage);  
} 
} 

나는 오류 메시지 접근 가면 완료 될 때 사용자가 오류 메시지가 반환됩니다 알 수 있도록 예외를 던질 수 있습니까?

+0

마지막 것이 좋습니다. "비정상 상황"을 제어 할 수 있다면 수동으로 처리하는 것이 좋습니다. –

+2

'=='/'! ='이 아니라'equals'을 사용하여 문자열을 비교해야한다는 것에주의하십시오. http://stackoverflow.com/questions/513832 – yshavit

+0

@AshotKarakhanyan - 나는 우리가 여기있는 모든 프로그래머이기 때문에 항상 자동으로 처리하는 것을 선호 할 것이라고 생각합니다. 사용자가 수동으로 문제를 해결할 수 있도록 프로그램을 중지시키는 것은 피할 수있을 때 특히 바람직하지 않습니다. –

답변

0

예외를 던지면 제어 흐름을 예외 처리기로 전달하는 데 시간이 걸리기 때문에 특히 효율적이지 않습니다. 가능한 경우 새로운 것을 만들고 피하는 것을 피하십시오. assignValue가 실패한 상황 집합을 찾아 예외 (예외가 아닌)를 사용하여 분리하고 발생한 일에 대한 메시지를 인쇄하는 것과 같은 간단한 작업을 수행 할 수도 있습니다.

0

예외가 발생하면 쉽게 무시할 수 없지만 반환 코드는 무시할 수 있습니다. 반대로, "예상"오류를 처리 할 때는 반환 코드를 다루기가 더 쉽고 반환 코드는 처리하기가 더 저렴합니다. (오류가 발생하지 않을 때 오버 헤드가 실제로 예외보다 높을 수는 있지만).

각각 장점이 있습니다.

관련 문제