예외처리가 필요한 이유 - 오류상황 만들기

SungMin·2026년 6월 1일

자바 심화 정리

목록 보기
23/34

외부 서버와 통신할 때는 다양한 문제가 발생할 수 있다.

  • 서버 연결 실패
  • 데이터 전송 실패

현재는 실제 서버와 통신하지 않으므로, 특정 문자열을 입력했을 때 오류가 발생하는 상황을 가정하여 구현하였다.


package exception.ex1;

import java.util.Scanner;

public class MainV1 {
    public static void main(String[] args) {
        NetworkServiceV1_1 networkServiceV0 = new NetworkServiceV1_1();
        Scanner scanner = new Scanner(System.in);

        while (true) {
            System.out.print("전송할 문자: ");
            String input = scanner.nextLine();

            if (input.equals("exit")) {
                break;
            }

            networkServiceV0.sendMessage(input);
            System.out.println();
        }
        System.out.println("프로그램을 정상 종료합니다.");
    }
}


package exception.ex1;

public class NetworkClientV1 {
    private final String address;
    public boolean connectError;
    public boolean sendError;

    public NetworkClientV1(String address) {
        this.address = address;
    }

    public String connect() {
        if (connectError) {
            System.out.println(address + " 서버 연결 실패 ");
            return "connectError";
        }

        // 연결 성공
        System.out.println(address + " 연결 성공");
        return "success";
    }

    public String send(String data) {
        if (sendError) {
            System.out.println(address + " 서버에 데이터 전송 실패: " + data);
            return "sendError";
        }
        // 전송 성공
        System.out.println(address + " 서버에 데이터 전송: " + data);
        return "success";
    }

    public void disconnnect() {
        System.out.println(address + " 서버 연결 해제");
    }

    public void initError(String data) {
        if (data.contains("error1")) {
            connectError = true;
        }

        if (data.contains("error2")) {
            sendError = true;
        }
    }
}


package exception.ex1;


public class NetworkServiceV1_1 {
    public void sendMessage(String data) {
        String address = "http://example.com";
        NetworkClientV1 client = new NetworkClientV1(address);
        client.initError(data); // 추가

        client.connect();
        client.send(data);
        client.disconnnect();
    }
}
  • 연결 실패: 사용자가 "error1"이라는 메세지를 입력했을 경우, 오류코드는 connectError
  • 전송 실패: 사용자가 "error2"이라는 메세지를 입력했을 경우, 오류코드는 sendError

initError(String data)

  • 이 메서드를 통해 connnectError, sendError의 필드의 값을 true로 바꿀 수 있다.
profile
오늘도 한 걸음씩 나아가

0개의 댓글