-
TIL_6(Exception Handling, Network)TIL 2020. 9. 2. 18:53
[예외처리]
1. Exception vs. Error
Exception Error 개발자가 대처할 수 있다. 개발자가 대처할 수 없다. 코딩문제로 발생. 소프트웨어 문제, 전력차단, 서버 다운 등의 문제. 2. Exception 유형
Checked Exception: 예외처리를 반드시 해야 하는 경우(네트워크, 파일 시스템 등)
Unchecked Exception: 예외처리를 선택적으로 하는 경우(데이터 오류 등)
3. Exception 하위 클래스
NullPointerException, NumberFormatException, NumberFormatException 등이 있다.
3. try ~ catch finally
int i = 10; int j = 0; int r = 0; System.out.println("Exception BEFORE"); try { r = i / j; } catch (Exception e) { e.printStackTrace(); String msg = e.getMessage(); System.out.println("Exception: " + msg); } finally { System.out.println("예외 발생 여부와 상관없이 언제나 실행"); } System.out.println("Exception AFTER");
try 문 안에서 예외가 발생할 구문 밑으로 실행되지 않는다. 바로 try문 밖으로 나간다
4. finally
예외 발생 여부와 상관없이 언제든 실행한다.
5. throws
예외 발생 시 예외 처리를 직접 하지 않고 호출한 곳으로 넘긴다.
public class MainClass2 { public static void main(String[] args) { MainClass2 mc2 = new MainClass2(); try { mc2.firstMethod(); } catch(Exception e) { e.printStackTrace(); } finally { System.out.println("I'm Finally"); } } public void firstMethod() throws Exception { secondMethod(); } public void secondMethod() throws Exception { thirdMethod(); } public void thirdMethod() throws Exception { System.out.println("10 / 0 = " + (10 / 0)); } }
6. 실무에서 중요한 점:
예외처리를 throws, try catch 중 어떤 것을 이용할지 결정 기준
어디까지 예외처리를 할지 범위
[네트워크]
1. 네트워크
네트워크 대상(객체) 사이에 입/출력(InputStream/OutputStream)을 이용해서 데이터를 입력, 출력한다.
2. 소켓(Socket)
네트워크상에서 데이터를 주고받기 위한 장치이다.
사람들이 소지한 전화기를 예로 들 수 있다.
3. Socket 클래스
서버는 클라이언트를 맞을 준비를 하고 있다가 클라이언트의 요청에 반응한다.
serverSocket = new ServerSockey(9000); socket = serverSocket.accept();
4. Client 소켓과 Server 소켓
서버에 ServerSocket을 준비하고 클라이언트에서 Socket을 이용해서 접속한다.
Socket socket = null; try { socket = new Socket("localhost", 9000); }
5. 양방향 통신
클라이언트와 서버는 InputStream, OutputStream을 이용해서 양방향 통신을 할 수 있다.
'TIL' 카테고리의 다른 글
TIL_8(대입연산자, if문, for, while문) (0) 2020.09.17 TIL_7(Method) (0) 2020.09.03 TIL_5(Input&Output) (0) 2020.09.01 TIL_4(Lambda Expressions, StringBuffer & StringBuilder, Collections) (0) 2020.08.31 TIL_3 (abstract class) (0) 2020.08.29