2017. 8. 30 - pobi

2017. 8. 30. - 코드 스쿼드 pobi 강의

예외처리

  • Position클래스에서 발생할 수 있는 예외는?
    1. null값
    2. 길이가 2 이상
    3. 범위를 벗어나는지?
      • x < 0, y < 0, x > 7, y > 7
  • 모든 상황에 대해 예외처리를 하는건 테스트 범위가 너무 많고 너무 적게 하면 예외가 발생할 수 있다. 그래서 딱 맞는 부분에 대한 테스트 처리를 해야하는데 딱 맞게 테스트를 하는건 어렵다.

  • 예외가 발생하면 프로그램은 멈춘다. 예외처리를 하는 경우는 예외가 왜 발생했는지에 대한 범위를 지정할 수 있다. 또 그 에러가 발생하면 오류 메세지를 보내고 프로그램이 안멈추게 해야한다.

Exception의 종류

  • RuntimeException
    public class InvalidPositionException extends RuntimeException {
    
      public InvalidPositionException() {
        super();
      }
    
      public InvalidPositionException(String message, Throwable cause) {
        super(message, cause);
      }
    
      public InvalidPositionException(String message) {
        super(message);
      }
    }
    
  • Compile Time Exception
    • 잔액부족(은행)
    • id/pwd
  • 필요하면 직접 예외처리 클래스를 만들수도 있다. 아래의 2 클래스를 상속받고 super클래스로 부터 생성자를 상속받아 생성해서 사용한다.

  • 예외를 던질려면 throw라는 키워드를 사용해야하는데 이때 try-catch문으로 받으면 예외가 발생해도 프로그램이 정지되지 않는다.

  • 웹프로그래밍에서는 예외를 마지막으로 받는 부분이 Controller이다. 컨트롤러에서는 예외를 받으면 반드시 예외처리를 시켜줘야한다.

  • Exception에는 RuntimeException 과 Compile Time Exception이 있는데 무엇을 써야할지 모를때는 RuntimeException을 써라
    • Compile Time Exception은 try-catch문을 반드시 작성해줘야한다. (강제)
    • RuntimeException은 try-catch를 작성하지 않아도 된다. (옵션)
  • Checked Exception(Compile Time Exception), Unchecked Exception(RuntimeException)

새로운 언어를 배울때 주력 언어가 있다면 쉽다.

  • 자바에 자신있다면 주력언어로 짤수있는 로직을 하나 정해서 주력언어로 짜고 새로운 언어로 로직을 짜보면 쉽게 배울수 있다.

포비 로또 게임 설명

  • 기본적인 구조는 MVC를 기반으로 작성함
    • 입출력 처리는 View, 핵심 로직은 Model, Model과 View를 이어서 처리해주는 부분인 Controller는 lotto에 있다.
  • Model부분에 핵심로직이 구현되어야하고 단위테스트가 집중되어야한다.(다른 View나 Controller 보다 더 해야한다.)

로또게임 예외처리

  • null, 1000원 미만
  • 숫자가 아닌 경우
  • 당첨번호 6개 확인

로또게임 웹 UI 구현

기존의 코드에 새로운 기능을 추가할 때 기존의 코드를 오버로딩한 메서드를 생성해서 기존 코드에서 오류가 발생하지 않게 하면서 새로운 기능을 추가 할 수 있다.

  • 수동입력
  • 보너스 볼 입력
  • 컨트롤러 및 UI 값 처리

Effective Java 2/E 2장 객체의 생성과 삭제

  • 생성자 대신 정적 팩터리 메서드를 사용할 수 없는지 생각해 보라.
    • 생성자와는 달리 정적 팩터리 메서드에는 이름(name)이 있다.
    • 생성자와는 달리 호출할 때마다 새로운 객체를 생성할 필요는 없다.
    • 반환값 자료형의 하위 자료형 객체를 반환할 수 있다.

Comments