개발꿈히하
503
2020-04-13 16:50:47
5
438

초보 웹 개발 학생? try catch문 질문입니다


단순 복사 붙여넣기를 하면서 문제 없이 쓰고있는데


초보이다 보니 

언제 써야 하는지 정확히 모르겠습니다.

예외처리를 해줄때 사용한다는것은 무슨말인지 알겠습니다.

그런데 어떤경우 예외처리를 해줘야 하는지 이해가 안갑니다.

try catch를 안쓰면 에러가 떠서 꼭 써줘야 하는 경우가 있는것 같더라구요

일단 아래는 제가 만든 try catch 문입니다.

하나는 sms 를 보내는것이고요

 try {
    JSONObject result = coolsms.send(set);
    } catch (CoolsmsException e) {
   
         System.out.println("에러메세지 발송"+e.getMessage());
         System.out.println("에러메세지 발송"+e.getCode());
    }

------------------------------------------------------------

try {
files.transferTo(saveFile);
} catch (IOException e) {
e.printStackTrace();
return null;
}

이거는 파일 업로드입니다.

위 두 코드를 try catch문을 안쓰고 구동? 다르게 만들어서 구동시킬수 있나요??

또한 만약 무조건 써야하는거면 왜 쓰는지 궁금합니다...

단순 에러가 발생하면 자동완성으로가 아닌 직접 이해하며 손으로 구현해보고싶어 질문드립니다.

0
  • 답변 5

  • 원푠듯
    290
    2020-04-13 16:53:41

    try catch를 안 쓰면 에러가 나는 게 아니라, 에러가 날 수도 있는 부분을 처리해주기 위해 try catch 문을 씁니다.


    위에서 sms를 보냈는데, 만약 이 프로세스가 실패하면 에러가 뜨겠죠. 그런데 만약 적절한 에러 처리가 없다면 해당 서비스가 먹통이 될 수 있으니, try catch 문으로 에러가 발생했을 때 프로레스를 멈추지 않고 에러처리를 해 주는 겁니다.

  • 개발꿈히하
    503
    2020-04-13 17:01:57

    그렇다면 무조건 써줘야 하는거 같은데


    어떤 메소드에서 써줘야 하는거죠...??


    무조건 써줘야 하는 메소드?? 가 있는건가요?

    -1
  • 헬헬뿡
    607
    2020-04-13 17:25:01 작성 2020-04-13 17:26:48 수정됨

    일정 간격으로 데이터를 수신받아야 하는 동영상 스트리밍에서 갑자기 사용자 기기 인터넷 데이터 끊김 처럼 개발자가 예측 할 수 없는 문제가 발생할 수 있는 상황 에 try catch 를 활용하여 서비스 안정성을 높일 수 있습니다.

  • lnomadism
    1k
    2020-04-13 18:03:05

     coolsms.send(set)에서 send라는 메소드에서 문제가 생기면 Exception을 throw하게끔 되어있어서입니다.

    즉 try catch를 쓰고싶지 않으시다면 send라는 메소드를 override시켜서 Exception을 던지지 않게끔 수정해줘야되겠죠.

     
    files.transferTo(saveFile)도 마찬가지입니다. transferTo라는 메소드 자체가 Exception을 발생하도록 생겨먹었기 때문이죠.

    그런데 대부분 외부 라이브러리에서 가져다 쓰는메소드가 많은만큼 try catch는 어쩔수없이 쓸수밖에 없겠죠.


  • mirinaes
    127
    2020-04-13 18:28:52 작성 2020-04-13 18:30:03 수정됨

    해당 스레드에서 별도의 오류처리나 로그를 남겨야 하는경우 try catch를 써서 오류처리 후 끝낼수도 있고 처리 후 다시 throw하여 전파 할 수 있습니다.

    해당스레드에서 처리 할 필요가 없는 경우 try catch를 사용하지 않고 메소드선언에서 throws 로 해당 익셉션을 바로 전파 할 수 있습니다.

    오류처리가 별도로 필요한 경우 쓰시면 됩니다 

  • 로그인을 하시면 답변을 등록할 수 있습니다.