코딩/Java

    자바 나만의 예외 만들기

    표준 예외 클래스로도 많은 예외 상황을 표현할 수 있다. 하지만 그렇지 않은 경우도 있을 것이다. 이럴 때에는 직접 예외를 만들면 된다. 만들기전에 예외를 checked로 할 것인가 unchecked로 할 것인가를 정해야 한다. API 쪽에서 예외를 던졌을 때 API 사용자 쪽에서 예외 상황을 복구 할 수 있다면 checked를 사용 checked 예외는 사용자에게 문제를 해결할 기회를 주는 것이면서 예외처리를 강제하는 것이다. 하지만 checked 예외를 너무 자주 사용하면 API 사용자들이 몹시 힘들기 때문에 적정선을 찾는게 중요하다 사용자가 API의 사용방법을 어겨 발생하는 문제거나 예외 상황이 이미 발생한 시점에서 그냥 프로그램을 종료하는 것이 덜 위험 할 때 unchecked를 쓴다. Runti..

    예외 만들기

    지금까지 API의 소비자로서 API 측에서 던지는 예외를 처리했었다. 이번에는 API의 생산자로서 소비자들에게 API를 제공하는 입장이 되어 보자 위의 코드에서 예외가 발생한 이유는 10을 0으로 나누려고 하기 때문이다. setOprands를 통해 입력된 두번째 인자의 값이 0이기에 발생한 문제이다. 여기서 우리가 할 수 있는 조치는 두가지다. 1. setOprands의 두번째 인자로 0이 들어오면 예외를 발생 2. 메소드 divide를 실행할 때 right의 값이 0이면 예외를 발생 위의 코드는 두번째의 방법을 적용한 방법이다. 첫번째 방법은 주석으로 되어있다. 예외 사용해야 할 상황 IllegalArgumentException 매개변수가 의도하지 않은 상황을 유발시킬 때 IllegalStateExce..

    자바 scanner

    next() : 문자열 입력받음 띄어쓰기 전까지 입력 즉 space가 있음 종료 nextLine() : 문자열 입력받음 키보드 버퍼가 비어있을 경우 입력을 요구 키보드 버퍼가 비어있지 않으면 버퍼 전체의 내용을 읽어들임 enter를 만나면 종료 nextInt() : int 타입 반환 nextDouble : double 타입 반환 키보드 버퍼를 사용한 이유는 숫자를 입력 후 바로 문자를 입력 받는 경우 콘솔 입력을 받는게 아니라 버퍼에 있는 데이터를 가져오기 때문에 문자를 입력 받지 않고 바로 출력을 해버리기 때문이다.

    자바 예외 던지기

    new FileReader 라는 생성자는 내부적으로 예외를 발생시켜서 사용자가 처리하도록 한다. 지금까지 예외를 처리하는 방법으로 try...catch...finally를 배웠다. 이외에 다른 방법도 있다. throws를 사용하는 것이다. throws는 예외처리를 다음 사용자에게 넘기는 것이다. throws와 throw 둘 다 Exception을 발생시킨다는 것에는 차이가 없다. 하지만 둘 사이의 차이점은 throws는 현재 메서드에서 자신을 호출한 상위 메서드로 Exception을 발생시킴 throw는 억지로 에러를 발생시키고자 할 때 사용한다(현재 메서드, 혹은 상위메서드로) 다시 말하자면 throws 키워드를 사용하는 메서드를 호출한 상위 메서드에서 이러한 에러 처리에 대한 책임을 맡게 되는 것이고..