반응형
Notice
Recent Posts
Recent Comments
Link
«   2025/09   »
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
Archives
Today
Total
관리 메뉴

웹풀스택 공부 중

14 - 1. Java Exception 본문

웹개발/Java

14 - 1. Java Exception

lukeit 2024. 10. 31. 13:30

Java 동작 원리

  • Intellij는 두개의 Application 구동이 필요하다

    • 우리가 만든 우리의 Application
      • application.yaml = tsconfig + jsconfig + prettierrc + .env + …
    • Gradle 이라는 Java Application
      • Gradle Restart button == npm install
    • 두 Application 간의 Version을 맞춰야 실행한다
  • Enabled Annotation Processing

    • @ 가 붙은 문법
      • “Lombok Annotation” 이라 부른다
        • Method를 만들어준다
        • @ 를 통해 AST를 생성한다
          • AST (Abstract Syntax Tree): 문법을 해석하는 트리 구조
            • AST 기반으로 Bytecode로 변환한다
              • Lombok은 이때 AST에 Children을 붙여준다
              • 이렇게 Lombok에 의해 수정된 AST는 최종 Bytecode로 생성된다

Exception

  • Java에서는 예외처리를 무조건 해야한다

    • Try → Throw → Catch 구성으로 에러를 처리한다
      • Catch 이후 다시 Throw도 할 수 있다
  • 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
    • error code 1 이다
      • 비정상적 종료라는 의미
  • Custom Exception

    • 따로 Pacakge를 만들어 extends 로 넘겨 custom Exception을 만들 수 있다
      • ex.) public class databaseException extends RuntimeException
      • Checked Exception을 최대한 사용하지 않는걸로 바뀌는 추세이다
    • 생성자를 만들어줘야한다
    • Exception을 먹어버리면(?) 안된다
      • Stack Trace를 표시하지 않는것을 먹는다고 표현함
      • println 만 사용해서 처리를 해도 먹는 것이다.
반응형

'웹개발 > 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