사용자 정의 예외규모 있는 어플리케이션을 개발하다 보면 표준 API에서 제공하는 예외 클래스만으로는 표현하기 힘든 예외들이 있습니다. 예를 들어 회원가입 기능을 구현하기 위해서는 중복확인 API를 구현하게 됩니다. 이때 입력한 아이디가 이미 존재하는 경우 표준 API의 어떤 예외를 발생시켜야 할까요? 이럴 때에 UserAlreadyExistException 같은 예외를 만들어서 던지게 된다면 내가 개발한 API를 다른 개발자가 사용하는 데에 있어서 많은 정보를 얻을 수 있을 것입니다.또한 서버환경이라면 문제가 발생했을 때 표준 API에서 제공하는 예외를 돌려쓰는 것보다 구체적인 정보를 담고 있는 예외를 정의하여 던지게 해 놓았을 때 서버 콘솔이나 로그파일을 보고 한눈에 알아볼 수 있을 것입니다.사용자 정..
자바[Java]
2017. 12. 29. 06:00
[JAVA] 자바 예외를 발생시키는 방법 - throw
예외를 발생시키는 이유예외를 발생시키는 이유는 정보를 주기 위함입니다. 만약 예외라는 개념 자체가 없다면 어떻게 될까요?만약 자바에 예외란 개념이 없는 상태에서 다음과 같이 문자열 비교연산을 하려는데 name에 객체의 참조값이 할당되지 않아 null을 참조하게 되었습니다.그러나 예외라는 개념이 없기때문에 JVM은 별다른 행동을 하지 않고 프로그램을 종료시켜 버렸습니다.만약 대기업의 쇼핑몰 서버를 개발했는데 회원 이름을 비교하다가 위와 같은 상황이 발생했다면 서버는 비 정상적으로 종료되었을 것이지만 해당 서버를 개발한 개발자는 어떠한 정보나 로그를 찾을 수 없을 것입니다.name.equals("kim chul soo"); //NullPointerException이 발생 되어야 함위와 같이 JVM에서는 표준..
자바[Java]
2017. 12. 28. 19:41
[JAVA] 자바 예외 떠넘기기 - throws
예외 떠넘기기 - throws 사용메서드 내부에서 예외가 발생했을 때 예외를 try - catch 문으로 잡아서 처리할 수 있지만 경우에 따라서 현재 메서드를 호출한 메서드로 예외를 떠넘길 수 있습니다.예외를 떠넘기는 방법은 다음과 같이 throws 키워드를 메서드 뒤에 붙여주면 됩니다.public static void generateException() throws NullPointerException{ //NullPointerException 발생}만약 떠넘겨야할 예외 종류가 여러개라면 쉼표(,) 를 기준으로 나열하여 선언합니다.public static void generateException() throws NullPointerException, ArithmeticException{ //..
자바[Java]
2017. 12. 19. 18:00
[JAVA] 자바의 탄생 및 역사
알아두면 좋은 자바의 탄생 및 역사자바는 1990년 말 GE(General Electric)사가 대화식 TV와 가전제품에 쓰일 소프트웨어를 썬마이크로시스템즈에 의뢰하게 되면서부터 역사가 시작됩니다. 썬마이크로시스템즈의 엔지니어인 제임스 고슬링 과 동료들은 1991년 가전제품에서도 돌아 갈 수 있는 언어인 'Oak' 언어를 개발합니다.이후 Oak는 그린 프로젝트로 전환 후 웹 프로그래밍에 사용할 수 있도록 개선 되었고 1996년 이름을 자바 커피에서 따온 'JAVA' 라는 이름으로 1.0 버전을 발표하지만 1995년 ~ 1999년까지 윈도우(Window) 프로그램이 대세였기 때문에 C++언어에 비해서는 점유율이 매우 떨어졌습니다.특히 객체지향적 패러다임에 JVM이란 가상머신까지 사용하는 자바는 메모리와 C..
자바[Java]
2017. 12. 16. 23:06
[JAVA] 자바 향상된 예외 처리 - try - with - resources 문
입출력 자원(IO Resource)프로그램은 운영체제에 자원을 할당받아 동작합니다.자원에는 연산을 담당하는 CPU, 주기억장치, 보조기억 장치 등이 있고 이러한 자원들을 할당 받게 됩니다.이러한 자원들은 여러 프로그램들이 필요로 하는 것이지만 한정되어 있기 때문에 여러 프로그램에게 공평하게 분배되어야 합니다.그러나 프로그램의 오류나 프로그램의 안좋은 동작방식에 의해 자원들을 할당받기만 하고 반납해주지 않는다면 다른 프로그램은 자원을 사용하지 못하게 될 것입니다.또한 점점 더 많은 자원을 요구하여 결국 모든 자원을 독점하고 사용하게 된다면 운영체제의 자원 고갈로 인해 치명적인 문제가 발생할 수 있습니다.이 중 가장 많은 문제가 발생하는 것이 입출력 자원입니다.프로그램은 수많은 대상과의 입출력을 수행하게 됩..
자바[Java]
2017. 12. 12. 00:37
[JAVA] 자바 향상된 예외 처리 - Multi Catch문
참고글[JAVA] 자바 예외 처리 방법 (Exception Handling)[JAVA] 자바에서 예외(Exception)란?멀티캐치하나의 try 블록에서 여러개의 예외가 발생하는 경우 많은 catch 블럭이 발생하게 됩니다.try{}catch(예외1 e1){ 예외1 처리 로직}catch(예외2 e2){ 예외2 처리 로직}catch(예외3 e3){ 예외3 처리 로직}그러나 이렇게 많은 catch문이 발생하면 그 안에서 중복되는 코드들이 발생할 수 있습니다.예를 들어 e.printStackTrace()를 통해 예외 정보를 출력하는 로직등이 대표적입니다.JDK1.7 부터는 이러한 불편함을 해소하기 위해 멀티캐치(multi catch)문을 제공합니다.멀티 캐치문은 다음과 같이 사용합니다. 하나의..
자바[Java]
2017. 12. 9. 08:00
[JAVA] 예외의 회피
예외의 회피예외의 회피라는 개념이 있습니다.예외가 발생할 수 있는 상황을 미리 예측하여 예외를 예방하는 것 입니다.물론 Checked 예외의 경우 예외처리를 강제하기 때문에 무조건 예외처리를 해 주어야 하지만 실행예외처럼 Unchecked 예외인 경우에는 예외를 회피할 수 있습니다.예를 들자면 다음 코드의 경우 String s를 대문자로 바꾸어 출력하는 예제입니다.NullPointerException은 Unchecked 예외이므로 컴파일 과정에서도 체크되지 않습니다.만약 이 때 if문에서 예외의 회피가 없었다면 s를 대문자로 바꾸는 과정에서는 예외가 발생하게 됩니다.String s = null;//예외를 회피하는 if구문if(s == null){ s = "empty";}System.out.print..
자바[Java]
2017. 12. 9. 00:53
[JAVA] 자바 예외 처리 방법 (Exception Handling)
예외처리란예외처리란 프로그램 실행 중 예기치 못한 상황이 발생했을 때 적절하게 조치를 취함으로써 프로그램이 수행하는 동작을 이상없이 진행하도록 하는 것입니다.우리가 개발한 프로그램이 사용자의 컴퓨터에서 실행되는 도중에는 오류가 발생해도 프로그램을 수정할 수 없기 때문에 프로그램 개발 시 미리 예외처리 코드를 작성하여 대비해야 합니다.에러와 같이 치명적인 오류는 처리하고 싶어도 처리할 수 없는 경우가 거의 대부분이기 때문에 오류 처리가 무의미하지만 예외의 경우에는 적절한 처리를 해준다면 신뢰성 있는 프로그램을 만드는 데에 큰 도움을 줄 것입니다.예외의 발생자바에서 예외가 발생했을때 어떠한 처리도 해주지 않는다면 이후 코드는 실행되지 않은 상태에서 JVM의 예외처리기까지 예외가 전달되고 예외처리기는 해당 예..
자바[Java]
2017. 12. 7. 01:50
[JAVA] 자바에서 예외(Exception)란?
프로그램 오류(Error)프로그램이 어떤 상황에서 예기치 못한 상황이나 원인에 의해 오작동하거나 비정상적으로 종료되는 경우를 프로그램 에러 또는 오류라고 합니다.오류는 크게 세 가지로 분류가 가능합니다.컴파일 에러 - 소스코드의 잘못된 문법 구문이나 오타, 잘못된 자료형 사용 등에 의해 컴파일 시점에 발생하는 에러로 자바를 예로 들자면 .java 소스파일을 .class파일로 컴파일 하는 과정에서 발생되는 에러라고 볼 수 있습니다.런타임 에러 - 컴파일이 제대로 된 이후 프로그램이 실행 중 발생하는 에러로 자바를 예로 들면 사용자가 이름을 입력하지 않았는데 그 값을 문자열 연산을 한다든가 할 때 발생하는 NullPointerException 같은 경우를 들 수 있습니다.논리적 에러 - 소스코드 레벨에서 발..
자바[Java]
2017. 12. 6. 00:17
[JAVA] 예외의 종류
자바 예외의 종류자바는 오류 및 오류를 클래스로 관리하며 당연히 최상위 클래스인 Object를 상속받게 됩니다.프로그램이 실행되다가 예기치 못한 상황이 발생시 JVM은 해당 상황에 맞는 예외를 만들어 던지게 됩니다.오류 중 최상위 클래스는 Throwable 클래스인데 이름에서도 알 수 있듯이 throw(던지다) 와 able(~ 할 수 있는) 즉 던질 수 있다는 뜻을 가지고 있습니다.따라서 Throwable을 상속받아야만 예외로서 던져질 수 있다는 것을 알 수 있습니다.예외 상속 계층도예외의 상속 계층도는 다음과 같으며 거의 대부분의 중요한 예외 및 에러는 java.lang 패키지에 포함되어 있습니다.자바의 오류는 에러와 예외로 나뉘며, 예외는 또다시 컴파일 예외와 런타임 예외로 나뉩니다.자바에서의 모든 ..