2014-04-27 2 views
0

때로는 아래의 시나리오에서 나 자신을 찾습니다. 가능한 한 간단하게 질문하기Try..Catch 시나리오

"자바가 try/catch 문에서 서라운드하게 만드는 코드 블록을 작성합니다. 캐치를 사용하지 않아서 비워 둡니다. 잘못된?"

boolean operationSucceeded = false;     
JSONObject response = null;    

try{ //Java wants you to surround JSONObject parsing with try/catch, and they usually have you surround lots of other things in try/catches 

    response = new JSONObject(responseFromServerAboveNotRelevantToThisCodeBlock) 
    //do something with response 
    operationSucceeded = true;      
} 
catch (JSONException e) {     
    //what would happen here??      
    }   

그래서이 시나리오에서 나는 생각할 수있는 catch 블록을 사용하지 않습니다. 나는 아무 데서도 로그 할 필요가 없으며 이미 거짓이라고 가정하고 있으므로 상태를 false로 다시 설정해야 할 필요가 없습니다. 그리고 작업이 작동하면 true로 설정됩니다 (코드의 마지막 줄).

그래서 항상 빈 캐치가 있습니다. 코드 캐스팅 분석기가 잘못되었다고 말합니다. 어떻게해야합니까? 내 코드와 사고 방식이 모두 잘못되어 논리적으로 재구성되어야 실제로 잡을 수있는 뭔가가 실제로 발생합니다.

고마워요.

+0

예외를 자동으로 catch하면 런타임 문제가 숨겨져 디버깅이 더 어려워 질 수 있습니다. –

답변

1

내 생각에, try-catch 문은 오류가 있어도 프로그램이 중단되거나 멈추는 것을 방지하기위한 것입니다. "e.printstacktrace()"와 같은 작업을 수행하거나 계속 진행할 수는 있지만 코드에서 수행하고자하는 바를 나타내는 코드를 작성하는 것이 좋습니다.

0

가능한 오류를 항상 처리하는 것이 좋습니다. 로그는 오류를 더 빨리 발견하는 데 매우 유용합니다.

나는 .. 그게 더 좋은 것 같아요

 boolean operationSucceeded = true;     
JSONObject response = null;    

try{ //Java wants you to surround JSONObject parsing with try/catch, and they usually have you surround lots of other things in try/catches 

    response = new JSONObject(responseFromServerAboveNotRelevantToThisCodeBlock) 
    //do something with response      
} 
catch (JSONException e) {     
    operationSucceeded = false; 
    // Some log here 

    } 
0

나는 예외가 잡힐 때/수행해야 할 관련 것도 종종이 없다는 것을 동의합니다. 심지어 어떤 것을 기록하는 것은 때때로 바람직하지 않습니다.

그러나 코드 검토에 참여할 때 최소한 예외가 의도적으로 무시되고 있음을 알리는 의견을 기다리고 있습니다. 명백한 사례가 아니라면 그 이유가 의도적으로 무시당하는 이유를 설명하기를 기대합니다.

0

Try/Catch 블록은 예외로 인해 프로그램이 종료되는 것을 처리하는 데 매우 유용합니다. try 블록의 코드가 예외를 throw 할 수 있으며 catch 블록을 구현하여 예외 이벤트에서 프로그램 실행을 계속할 수 있습니다. 귀하의 경우에는 플래그를 다시 false로 설정할 필요는 없지만 사용자에게 코드가 종료 될 이유를 알리는 유용한 코드를 작성할 수 있습니다. 또한 개발자는 e.printStackTrace()를 작성하여 어떤 예외가 발생했는지 알 수 있으므로 디버깅하는 것이 유용합니다.