2017. 8. 30. - 코드 스쿼드 pobi 강의
예외처리
- Position클래스에서 발생할 수 있는 예외는?
- null값
- 길이가 2 이상
- 범위를 벗어나는지?
- 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