try-catch-finally VS Try-with-resources

공부는 혼자하는 거·2021년 12월 8일
0

JAVA & Kotlin Tip

목록 보기
4/11

try-catch-finally로 자원 해제


      String result = "";

        OutputStreamWriter outStream = null;
        PrintWriter writer = null;
        InputStreamReader tmp = null;
        BufferedReader reader = null;

        try {

            URL url = new URL(cmProperties.seven_restUrl);

            HttpURLConnection http = (HttpURLConnection) url.openConnection(); // 접속
            // --------------------------
            // 전송 모드 설정 - 기본적인 설정
            // --------------------------
            http.setDefaultUseCaches(false);
            http.setDoInput(true); // 서버에서 읽기 모드 지정
            http.setDoOutput(true); // 서버로 쓰기 모드 지정
            http.setRequestMethod("POST"); // 전송 방식은 POST

            // --------------------------
            // 헤더 세팅
            // --------------------------
            // 서버에게 웹에서 <Form>으로 값이 넘어온 것과 같은 방식으로 처리하라는 걸 알려준다
            http.setRequestProperty("content-type", "application/x-www-form-urlencoded");

            // --------------------------
            // 서버로 값 전송
            // --------------------------
            StringBuffer buffer = new StringBuffer();
            if (map != null) {

                Set key = map.keySet();
                int iCnt = 0;
                for (Iterator iterator = key.iterator(); iterator.hasNext(); ) {
                    String keyName = (String) iterator.next();
                    String valueName = map.get(keyName);
                    if(iCnt != 0)  buffer.append("&");
                    iCnt++;
                    buffer.append(keyName).append("=").append(valueName);
                }
                log.info("키 대여 완료 알림 buffer.toString():" + buffer.toString());
            }

            outStream = new OutputStreamWriter(http.getOutputStream(), "UTF-8");
            writer = new PrintWriter(outStream);
            writer.write(buffer.toString());
            writer.flush();

            // --------------------------
            // Response Code
            // --------------------------
            // http.getResponseCode();

            // --------------------------
            // 서버에서 전송받기
            // --------------------------
            tmp = new InputStreamReader(http.getInputStream(), "UTF-8");
            reader = new BufferedReader(tmp);
            StringBuilder builder = new StringBuilder();
            String str;
            while ((str = reader.readLine()) != null) {
                builder.append(str);
                builder.append("\n");
            }
            result = builder.toString();

        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
                outStream.close();
                writer.close();
                tmp.close();
                reader.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }

Try-with-resources 로 변경하고 싶은데 방법이 안 떠오른다...

Try-with-resources로 자원 쉽게 해제

    void createDestinationDataFile(String destinationName, Properties connectProperties)
    {
        File destCfg = new File(destinationName + ".jcoDestination");
        if (!destCfg.exists()) {

            try(FileOutputStream fos = new FileOutputStream(destCfg, false)){
                connectProperties.store(fos, "for tests only !");

            } catch (FileNotFoundException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }

        }
    }
profile
시간대비효율

0개의 댓글