웹풀스택 공부 중
14 - 1. Java Exception 본문
Java 동작 원리
Intellij는 두개의 Application 구동이 필요하다
- 우리가 만든 우리의 Application
- application.yaml = tsconfig + jsconfig + prettierrc + .env + …
- Gradle 이라는 Java Application
- Gradle Restart button ==
npm install
- Gradle Restart button ==
- 두 Application 간의 Version을 맞춰야 실행한다
- 우리가 만든 우리의 Application
Enabled Annotation Processing
@
가 붙은 문법- “Lombok Annotation” 이라 부른다
- Method를 만들어준다
@
를 통해 AST를 생성한다- AST (Abstract Syntax Tree): 문법을 해석하는 트리 구조
- AST 기반으로 Bytecode로 변환한다
- Lombok은 이때 AST에 Children을 붙여준다
- 이렇게 Lombok에 의해 수정된 AST는 최종 Bytecode로 생성된다
- AST 기반으로 Bytecode로 변환한다
- AST (Abstract Syntax Tree): 문법을 해석하는 트리 구조
- “Lombok Annotation” 이라 부른다
Exception
Java에서는 예외처리를 무조건 해야한다
- Try → Throw → Catch 구성으로 에러를 처리한다
- Catch 이후 다시 Throw도 할 수 있다
- Try → Throw → Catch 구성으로 에러를 처리한다
Checked Exception: Need to be checked
문법적으로 처리해야한다
처리방법:
Try → Catch로 메서드 내에서 직접 처리
try { if (username.equals("admin") && password.equals("1234")) { System.out.println("-DB connected Success"); } else { throw new SQLException("-DB connected Failed"); } } catch (SQLException e) { e.printStackTrace(); }
throws
로 다른 메서드로 처리하도록 이관할 수 있다- 그렇게 할 경우 무조건 handling을 해줘야한다!
public static void connect(String username, String password) throws SQLException { if (username.equals("admin") && password.equals("1234")) { System.out.println("-DB connected Success"); } else { throw new SQLException("-DB connected Failed"); } } public static void main(String[] args) { try { connect("admin", "1232"); } catch (SQLException e) { e.printStackTrace(); } }
Checked Exception의 예시
- SQLException
- IOException
- ParseException
- FileNotFoundException
error code 0
이다- 정상 종료했다는 의미
“프로그램 외부”에서 발생하는 오류이다
- 충분히 예상 가능한 오류이다
- 콕 집어서 복구 및 제어가 가능하다!
- 에러 처리를 했는지 여부를 컴파일 시간에 검증이 가능하다
- 충분히 예상 가능한 오류이다
Unchecked Exception:
- 자바 프로그램 “내부 로직” 에서 발생하는 오류
- 에러가 어떤 상황에서 발생될지 예측할 수 없기에, 어떻게 복구해야할지 전혀 알 수 없다.
- 왜 발생했는지 로그로 꼭 표기하여 어디서 문제가 발생했는지 디버깅 할 수 있게 해애한다
e.printStackTrace()
로 로그를 표기하자
- 예시
- RuntimeException
- 다양한 이유로 예상치 못한 에러에 대비할 수 있는 Exception이다
- 자바를 잘 하려면 exception처리를 잘해야한다
- 상황 범주에 맞춰 Custom Exception 정의
- 상태 처리
- 적합한 곳에서, 적합한 Custom Exception 발행
- 중간 어딘가에서 적합한 처리
- Try→ Catch vs. throws
- Logic에서 발생할만한 에러나 상황을 예측할 수 있다
- NullPointerException
- ArithemticException
- ArrayIndexOutOfBoundsException
- RuntimeException
error code 1
이다- 비정상적 종료라는 의미
- 자바 프로그램 “내부 로직” 에서 발생하는 오류
Custom Exception
- 따로 Pacakge를 만들어
extends
로 넘겨 custom Exception을 만들 수 있다- ex.)
public class databaseException extends RuntimeException
- Checked Exception을 최대한 사용하지 않는걸로 바뀌는 추세이다
- ex.)
- 생성자를 만들어줘야한다
- Exception을 먹어버리면(?) 안된다
- Stack Trace를 표시하지 않는것을 먹는다고 표현함
println
만 사용해서 처리를 해도 먹는 것이다.
- 따로 Pacakge를 만들어
반응형
'웹개발 > Java' 카테고리의 다른 글
15 - 1. Java - Lombok (0) | 2024.11.04 |
---|---|
14 - 5. Java - Builder & 정적 팩토리 메서드 (1) | 2024.11.04 |
14 - 4. Java - Object 생성자 (0) | 2024.11.04 |
14 - 3. Java의 OOP 문법 - Encapsulation + Inheritence (0) | 2024.11.04 |
14 - 2. Java - JVM (0) | 2024.11.04 |