Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 컴파일
- java기본자료형
- java알고리즘문제풀이
- java map 출력
- 격파르타장점
- 항해99후기
- 비전공자sqld
- java최솟값구하기
- java알고리즘
- java 자료구조 활용
- java set 출력
- java set 저장
- 코딩부트캠프후기
- java참조자료형
- 격파르타비전공자
- java list 출력
- 작은수제거하기
- 항해15기
- java map 저장
- 격파르타후기
- 격파르타합격후기
- 노베이스부트캠프
- java map
- 프로그래머스
- 인터프린터언어
- sqld자격증합격
- javaJRE
- java list 저장
- javaJVM
- 프로그래머스제일작은수
Archives
- Today
- Total
코딩과 결혼합니다
[CS] Java 에러&예외 본문
728x90
프로그래밍의 오류 종류
- 컴파일 에러 : 컴파일 시에 발생
- 런타임 에러 : 실행 시에 발생
- 논리적 에러 : 실행은 되지만 의도와 다르게 동작
컴파일
- 주어진 언어로 작성된 컴퓨터 프로그램을 다른 언어의 동등한 프로그램으로 변환하는 프로세스(빌드)
- 대체로 문법상의 에러
- 에러가 발생한 부분을 알려준다.
- 예) ';' 누락 / 괄호가 안 맞음 / classpath에 누락된 클래스
런타임
- 프로그램이 컴파일된 후 실행하면서 에러 발생
- 대부분 개발 시 설계 미숙(논리적)으로 발생
- 에러 발생 시 프로그래머가 역추적하여 원인을 확인해야 한다.
- 예) NullPointerException / 무한루프 / 0으로 나누는 경우
논리
- '버그'
- 프로그램이 멀쩡히 돌아가는 것이니 에러 메시지를 알려주지 않는다.
- 개발자는 프로그램의 전반적인 코드와 알고리즘을 체크해야 한다.
- 예) 재고량이 음수가 나오는 경우 / 게임 캐릭터의 피가 0이어도 죽지 않는 경우
에러 : 프로그램 코드에 의해서 수습될 수 없는 심각한 오류
예외 : 프로그램 코드에 의해서 수습될 수 있는 다소 미약한 오류
에러는 메모리 부족이나 스택오버플로우와 같이 일단 발생하면 복구할 수 없는 심각한 오류이고 예측이 불가능하다.
에러는 JVM 실행에 문제가 생긴 것이므로 개발자가 대처할 방법이 없다.
대부분의 예외는 개발자가 구현한 로직에서 발생한 실수나 사용자의 영향에 의해 발생한다. 이에 대한 대응 코드를 미리 작성해 놓음으로써 어느 정도 프로그램의 비정상적인 종료 혹은 동작을 막을 수 있다.
예외 클래스 계층 구조
- Exception 및 하위 클래스 : 사용자의 실수와 같은 외적인 요인에 의해 발생, 컴파일 시 발생하는 예외
- FileNotFoundException : 존재하지 않는 파일의 이름 입력
- ClassNotFoundException : 클래스의 이름을 잘못 기재
- DataFormatException : 입력한 데이터 형식이 잘못된 경우
- RuntimeException 클래스 : 프로그래머의 실수로 발생하는 예외
- IndexOutOfBoundsException : 배열의 범위를 벗어남
- NullPoniterException : 값이 null인 참조 변수의 멤버를 호출
- ClassCastException : 클래스 간의 형 변환을 잘못함
- ArihtmeticException : 정수를 0으로 나누는 산술 오류
+ 런타임 예외 클래스
Checked Exception / Unchecked Exception
Checked Exception - 컴파일 예외 클래스들
- 반드시 예외 처리를 해야 한다.
- 발생할 가능성이 있는 메서드라면 반드시 로직을 try - catch로 감싸거나 throws로 던져서 처리해야 한다.
- Unchecked Exception으로 변환시켜 컴파일에서 예외처리를 강제하지 않게 할 수 있다.
런타임 예외로 처리해도 될 것들이 아직 Checked Exception으로 등록되어 강제적으로 try - catch를 사용해야 하는 불편함과, 로직상 Runtime Exception을 쓸 수밖에 없는 경우가 있기 때문에 추가된 기법이다.
throw new RuntimeException(new IOException(""));
Unchecked Exception - 런타임 예외클래스들
- 명시적인 처리를 하지 않아도 된다.
'2세 > Computer Science' 카테고리의 다른 글
[CS] 보안(DOS) (1) | 2023.11.15 |
---|---|
[CS] RESTful API 를 작성하기 위하여 고려할 것 (1) | 2023.11.14 |
[CS] 모노레포(monorepo) (0) | 2023.11.13 |
[CS] 서버리스(Serverless) (0) | 2023.11.09 |
[CS] Docker (0) | 2023.11.08 |