exception5 예외(Exception) 처리하기_사용자 정의 예외 객체(throw) [5/5] [ 사용자 정의 예외 객체 ] 기본 라이브러리(API)에서 제공하는 예외 객체 외 개발자가 선언해서 사용하는 예외 객체 Exception클래스 또는 Exception의 자식 클래스를 반드시 상속받아야 함 일반적으로 Exception에서 선언된 형태의 생성자 외에는 다른 멤버를 가지지 않음 즉 Exception을 상속받는 예외 객체를 직접 만들고, 조건문을 사용해서 특정 상황에서 예외를 강제로 발생하도록 만들어 줍니다. 사실 이 경우 조건문이기 때문에 굳이 예외 객체를 생성하지 않더라도 처리하고 싶은 예외 상황을 조건문으로 처리하거나, 예외 객체 대신 그냥 메소드로 생성해서 사용할 수도 있습니다. 다만 명시적인 예외 객체를 사용하므로써 코드의 가시성을 높일 수 있습니다. 아래는 일반 메소드로 예외 처리를 .. ▸JAVA/기본 문법 2019. 12. 13. 예외(Exception) 처리하기_throws [4/5] [ throws ] 예외를 직접 처리하지 않고 '던지는' 것 JVM에서 생성된 예외 객체를 직접 처리하지 않고 메소드를 호출한 곳으로 넘겨줌 (리턴과 비슷) 예외 객체가 반환되면 메소드를 호출한 곳에서는 그 예외 객체를 처리(catch)해줘야 함 메소드의 리턴값과 같이, throws가 선언된 생성자나 메소드는 실행 중 발생한 예외 객체를 직접 처리(catch)하지 않고 호출한 곳에 반환해줍니다. 메소드의 리턴값은 그냥 무시해도 되지만 예외 객체는 무시할 수가 없는 것이라 호출한 쪽에서 꼭 처리를 해줘야 합니다. 파일 입출력 기능을 가진 FileInputStream 클래스는 파일을 열고 읽는 등의 생성자와 메소드를 실행할 때 예외 처리가 없으면 컴파일 에러가 납니다. 그 이유는 아래와 같이 throws가 .. ▸JAVA/기본 문법 2019. 12. 13. 예외(Exception) 처리하기_'try-with-resources'문 [3/5] [ try-with-resources ] 'try-catch-finally'구문에서 따로 자원 해제를 해줘야 하는 불편함을 개선 Java SE-7 이상부터 지원 이전 글에서 "try-catch-finally"구문을 사용할 때는 각각의 스택프레임이 따로 생성되어 지역변수가 공유되지 않는 다는 점에 대해 얘기했습니다. try에서 열어둔 파일을 finally에서 닫기 위해서는 서로 파일의 참조변수를 공유해야하는데 변수 공유가 불가하니 구문 바깥쪽에 변수를 생성하는 방식으로 해결할 수 밖에 없었습니다. 그러다보니 가독성도 떨어지고 자원을 일일이 해제해줘야 하는 번거로움이 생겨났는데, 이를 편하게 바꿔준 구문이 바로 'try - with - resources'입니다. try문의 생성자로 자원의 참조변수를 생성해주.. ▸JAVA/기본 문법 2019. 12. 12. 예외(Exception) 처리하기_'try-catch-finally'문 [2/5] [ try-catch-finally ] 예외 처리를 위한 가장 기본적인 문법 try : 실제 내용을 실행 catch : 예외 시 어떻게 처리할 것인지 결정 finally : 실제 내용에서 마무리해야할 내용이 있다면 마지막에 처리 [ try-catch 구문 ] 기본 문법은 간단합니다. 먼저 미확인 예외에 대한 예외 처리를 간단하게 샘플로 들어보겠습니다. 사실 코드를 잘 짰다면 배열의 인덱스를 검색하는 과정에서 예외가 발생하지 않겠지만 예외라는 이름 그대로 생각지도 못하게 발생할 수 있습니다. 아래는 배열의 크기를 넘어서는 인덱스를 사용해 예외가 발생할 경우에 대한 예외 처리입니다. try에 수행할 코드를 작성한 후, catch부분에서 예외처리를 해줍니다. catch( )의 괄호안에는 JVM에서 예외처리 시.. ▸JAVA/기본 문법 2019. 12. 12. 예외(Exception) 처리하기_기본개념과 예외처리 클래스 [1/5] 자바에서 오류는 예외(exception)과 에러(Error) 2가지가 있습니다. 아래의 두 가지 설명에서 볼 수 있듯이, 개발자가 코드 내에서 처리할 수 있는 것은 "예외"에 관련된 사항입니다. [ 예외 (Exception) ] 프로그램 내에서 발생하는 예외상황으로 프로그램 내에서 처리가 가능한 것 배열의 크기에서 벗어난 인덱스에 접근하거나, 없는 파일을 열 때 등에서 발생 [ 에러(Error) ] JVM 내에서 발생하는 에러로 프로그램 내에서 처리가 불가능한 것 ThreadDeath나 가상머신(JVM)의 오작동 등을 말함 아래는 예외처리를 위한 클래스의 구조입니다. 이름이 모두 직관적이라 좋네요. 예외는 다시 "확인된 예외(Checked Exception)"와 "미확인 예외(Unchecked Excep.. ▸JAVA/기본 문법 2019. 12. 12. 이전 1 다음 💲 추천 글 반응형