Java75 예외(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. 컬렉션 프레임워크(컬렉션 API)_배열 다루기 [4/4] 컬렉션 프레임워크에서 배열을 다루다보니 개념정리가 잘 되어있지 않은 상태에서는 꽤 혼란스럴 수 있습니다. 클래스가 많은데 이리저리 연관되어 있는 경우가 많아서 그런 듯 합니다. 컬렉션 프레임워크의 전체 구성도는 아래와 같습니다. 실제로는 추상 클래스까지 중간에 있어서 조금 더 복잡한 구조이지만 간략히 필요한 것만 그렸습니다. [ 완전한 List 계열 컬렉션 만드는 법 ] 먼저 List 계열의 클래스들(ArraysList, Vector, LinkedList 등)은 List 인터페이스를 상속받았기 때문에 오버라이딩이 가능합니다. 즉, List 타입에 담아줄 수 있습니다. 굳이 List 계열의 컬렉션 타입을 List 타입에 담아주는 이유는 컬렉션을 여러 효율적인 알고리즘으로 처리 해주는 Collections .. ▸JAVA/기본 문법 2019. 12. 11. java.util.TreeSet 주요 메소드 [1/1] [ TreeSet Class ] 중복 없는 데이터 집합을 다룸 HashSet에 비해 상대적으로 데이터 처리 속도가 느리지만 다른 컬렉션에 비해 빠름 TreeMap Class와 유사한 작동 원리 컬렉션 프레임워크의 기본개념과, HashSet의 개념은 아래 링크글을 참조하시면 됩니다. 2019/12/10 - [JAVA/기본 문법] - 컬렉션 프레임워크(컬렉션 API)_기본 개념 [1/4] 2019/12/11 - [JAVA/기본 문법] - 컬렉션 프레임워크(컬렉션 API)_Set 계열 [3/4] [ 생성자 ] new TreeSet() 인자값으로 다른 컬렉션을 줄 수 있음 [ add() ] 값 추가, 중복값은 무시 객체의 경우 중복값을 피하기 위해 hashcode()와 equals() 메소드를 필히 오버라이딩 .. ▸JAVA/라이브러리(API) 2019. 12. 11. java.util.HashSet 주요 메소드 [1/1] [ HashSet Class ] 중복 없는 데이터 집합을 다룸 컬렉션 프레임워크 중 데이터 처리 속도가 가장 빠름 HashMap Class와 유사한 작동 원리 컬렉션 프레임워크의 기본개념과, HashSet의 개념은 아래 링크글을 참조하시면 됩니다. 2019/12/10 - [JAVA/기본 문법] - 컬렉션 프레임워크(컬렉션 API)_기본 개념 [1/4] 2019/12/11 - [JAVA/기본 문법] - 컬렉션 프레임워크(컬렉션 API)_Set 계열 [3/4] [ 생성자 ] new HashSet(); 인자값으로 용량과 사용률을 줄 수 있음 (HashMap과 동일) 용량 : 해시 테이블의 갯수를 의미 ( 카테고리의 갯수라고 보면 됨, 기본 16) 사용률 : 해시 테이블이 얼마만큼 다 차면 늘려줄 것인지 퍼센트.. ▸JAVA/라이브러리(API) 2019. 12. 11. 컬렉션 프레임워크(컬렉션 API)_Set 계열 [3/4] List 계열은 이해하기 어렵지 않으니 따로 정리하지 않겠습니다. 컬렉션 프레임워크 및 각 계열의 특징은 이전 글을 참조 부탁드립니다. 2019/12/10 - [JAVA/기본 문법] - 컬렉션 프레임워크(컬렉션 API)_기본 개념 [1/3] 2019/12/11 - [JAVA/라이브러리(API)] - java.util.HashSet 클래스의 주요 메소드 [1/1] 2019/12/11 - [JAVA/라이브러리(API)] - java.util.TreeSet 클래스의 주요 메소드 [1/1] [ HashSet ] HashMap과 유사하지만 별도의 키 값 없이 값 자체를 해싱하여 카테고리화 하여 저장 해싱 기법을 사용하여 컬렉션 프레임워크 중 가장 빠른 데이터 처리 속도를 가짐 HashMap과 동일한 원리라고 생각.. ▸JAVA/기본 문법 2019. 12. 11. java.util.TreeMap 주요 메소드 [1/1] [ TreeMap Class ] 컬렉션 프레임워크 Map 계열의 TreeMap 자료구조를 구현한 클래스 입력 순서에 상관 없이 자료를 트리 구조로 만들어 저장 및 검색 컬렉션 프레임워크 및 Map 계열의 기본 개념은 아래 글을 참조하시면 됩니다. 2019/12/10 - [JAVA/기본 문법] - 컬렉션 프레임워크(컬렉션 API)_기본 개념 [1/4] 2019/12/10 - [JAVA/기본 문법] - 컬렉션 프레임워크(컬렉션 API)_MAP 계열 [2/4] [ 생성자 ] 다른 맵계열과 마찬가지로 키(key)와 값(value)의 타입을 제네릭으로 지정 new TreeMap(); package study.first; import java.util.TreeMap; public class Main { public.. ▸JAVA/라이브러리(API) 2019. 12. 11. java.util.HashMap 주요 메소드 [1/1] [ HashMap Class ] 컬렉션 프레임워크 Map 계열의 HashMap 자료구조를 구현한 클래스 입력 순서에 상관없이 자료를 해싱 기법으로 분류하여 저장 및 검색 구버전 격인 HashTable Class도 사용법은 동일 컬렉션 프레임워크 및 Map 계열의 기본 개념은 아래 글을 참조하시면 됩니다. 2019/12/10 - [JAVA/기본 문법] - 컬렉션 프레임워크(컬렉션 API)_기본 개념 [1/4] 2019/12/10 - [JAVA/기본 문법] - 컬렉션 프레임워크(컬렉션 API)_MAP 계열 [2/4] [ 생성자 ] new HashMap() : 기본 용량 16, 사용률 0.75의 빈 HashMap 생성 argument로 (int Capacity, float loadFactor)를 직접 지정할 .. ▸JAVA/라이브러리(API) 2019. 12. 11. 컬렉션 프레임워크(컬렉션 API)_Map 계열 [2/4] List 계열은 이해하기 어렵지 않으니 따로 정리하지 않겠습니다. 컬렉션 프레임워크 및 각 계열의 특징은 이전 글을 참조 부탁드립니다. 2019/12/10 - [JAVA/기본 문법] - 컬렉션 프레임워크(컬렉션 API)_기본 개념 [1/3] 2019/12/11 - [JAVA/라이브러리(API)] - java.util.HashMap 클래스의 주요 메소드 [1/1] 2019/12/11 - [JAVA/라이브러리(API)] - java.util.TreeMap 클래스의 주요 메소드 [1/1] [ HashMap / HashTable ] 해시 테이블(Hash Table)을 이용한 검색 구조 사용 HashMap은 HashTable의 신버전 클래스라고 볼 수 있음 차이점은 HashMap은 동기화 처리가 불가능하고 Has.. ▸JAVA/기본 문법 2019. 12. 10. java.util.LinkedList 주요 메소드 [1/1] [ LinkedList Class ] 연결리스트 자료구조를 구현한 클래스 힙 메모리에 한 공간씩 데이터를 저장해두고 앞 뒤 노드의 주소가 보관된 메모리 주소를 가지고 있음 단일 연결리스트 : 자신의 뒷 노드의 주소만 가지고 있음 이중 연결리스트 : 자신의 앞 뒤 노드의 주소를 모두 가지고 있음 C언어에서는 연결리스트를 구현하기 위해 malloc으로 메모리를 할당하고 헤더에 대한 처리를 해야 하는 등 여러가지로 매우 번거로웠지만, Java에서는 사용하기 쉽게 클래스화 되어 있습니다. C에서 하나하나 작성하던 것들이 자동화되어 있으니까 뭔가 바보가 되어가는 느낌입니다. 하지만 필요에 따라서는 해당 클래스 사용보다 직접 구조와 메소드를 만드는 것이 필요할 수 있기 때문에 C언어 스타일로 한번쯤은 직접 작성해보.. ▸JAVA/라이브러리(API) 2019. 12. 10. java.util.Vector 주요 메소드 [1/1] [ Vector Class ] 컬렉션 프레임워크 중 List 계열의 한 종류 ArryaList Class와 동일한 인터페이스를 상속받은 클래스 ArrayList Class와 달리 동시 사용을 안전하게 처리할 수 있도록 설계된 클래스 (동기화 처리 가능) 일반적인 경우 ArrayList보다 무겁기 때문에 동기화 처리가 필요한 경우에 주로 사용 ArrayList와 Vector의 관계는 문자열 클래스인 StringBuilder와 StringBuffer 클래스의 관계와 비슷합니다. 동일 데이터를 여러 곳에서 동시에 처리하기 위한 장치들이 포함된 클래스가 Vector와 StringBuffer입니다. 여러 곳에서 동시에 하나의 자원을 사용할 대 문제없이 동작하도록 하는 기능을 "동기화 처리"라고 합니다. 하지만 미.. ▸JAVA/라이브러리(API) 2019. 12. 10. java.util.ArrayList 주요 메소드 [1/1] [ ArrayList Class ] 컬렉션 프레임워크 중 List 계열의 한 종류 일반 배열을 조금 더 쉽게 사용할 수 있도록 함 일반 배열과 원리나 구조는 다르지 않습니다. 다만, 배열의 사이즈를 조정하거나 중간에 값을 삽입하거나 하는 등의 번거로운 작업이 클래스 내의 메소드로 미리 작성되어 있어 편리하게 사용할 수 있습니다. 컬렉션 프레임워크의 정확한 개념은 아래 링크를 참조하시면 됩니다. 2019/12/10 - [JAVA/기본 문법] - 컬렉션 프레임워크(컬렉션 API)_기본 개념 [1/4] [ 생성자 ] new ArrayList() : 기본 크기가 10인 배열 생성 new ArrayList(기본크기) : 기본 크기를 지정 (배열이 다 차면 기본크기만큼 사이즈가 증가함) new ArrayList().. ▸JAVA/라이브러리(API) 2019. 12. 10. 이전 1 2 3 4 5 다음 💲 추천 글 반응형