외부 서버와 통신할 때는 다양한 문제가 발생할 수 있다.
현재는 실제 서버와 통신하지 않으므로, 특정 문자열을 입력했을 때 오류가 발생하는 상황을 가정하여 구현하였다.
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();
}
}
initError(String data)