본문 바로가기
Programming/C#

c#_10 : 인덱서와 예외처리

by 공부합시다홍아 2020. 6. 11.

인덱서 ( Indexer )

인덱스를 이용해서 객체 내의 데이터에 접근하게 해주는 프로퍼티입니다. 
객체를 마치 배열처럼 사용할 수 있게 해준다. 

- 인덱서 선언 방법

class 클래스명 

              한정자 인덱서 형식 this[형식 index]
              {
                         get
                         {
                                      //인덱스를 이용한 내부데이터 반환
                         }
                         set
                         {
                                      //인덱스를 이용하여 내부 데이터 저장
                          }
              }
}

위 인덱서 선언 문법을 보면 알 수 있듯이, 인덱서는 프로퍼티처럼 식별자를 따로 가지지 않는다. 
프로퍼티가 이름을 통해 객체 내의 데이터에 접근하게 해준다면, 인덱서는 인덱스를 통해 객체 내의 데이터에 접근하게 한다.

LIST<T> 

LIST<T> 클래스는 비일반화 클래스인 ArrayList와 같은 기능을 하며, 사용 방법 역시 동일하다. 

- LIST<T> 클래스는 인스턴스를 만들 때 형식 매개 변수를 필요로 한다는 것과 한 컬렉션에 "아무"형식의 객체나 마구      집어 넣을 수 있었던 ArrayList와 달리 LIST<T>는 형식 매개변수로 입력한 형식 외에는 입력을 허용하지 않는다 

- LIST<T> 선언방법

List <T> 변수명 = new List <T>();

T에 원하는 타입을 지정하면 치환이 가능하다.
int, float, string 외에 어떠한 형태의 타입도 지정이 가능하다.

배열과 달리 리스트는 원하는 곳에 데이터를 추가(Insert)할 수 있고, 필요할 때 마다 Add를 사용하여 리스트를 추가 할 수 있다. 

Remove 나 RemoveAt 을 이용하여 리스트를 삭제 할 수 있다. 삭제가 되면 리스트의 index는 자동으로 하나씩 당겨진다. 배열에서 카운트는 number.length인데,리스트에서는number.count이다.

 

예외

예외란

프로그램의 사용자는 내가 생각한대로만 프로그램을 다루지 않는다.
숫자만 입력해야 하는데 문자열을 입력하기도 하고 순서를 무시하고 명령어를 내리기도 합니다.
이처럼 프로그래머가 생각하는 시나리오에서 벗어나는 사건, 이것을 예외(Exception)라고 합니다.
예외가 프로그램의 오류, 다운으로 이어지지 않도록 적절하게 처리하는 것을 예외처리(Exception Handling]이라 한다.

위의 문법을 보면 try와 catch가 들어가있는 것을 확인할 수 있습니다. 보셨듯이 예외처리는 try와 catch 구문을 이용하여 사용합니다.

Try , Catch 

try 절의 코드 블록에는 예외가 일어나지 않을 경우에 실행되어야 할 코드들이 들어갑니다. 
catch 절에는 예외가 발생했을 때의 처리 코드가 들어가도록 설정해줍니다. 

try는 "시도하다" catch는 "잡다"라는 뜻을 가지고 있습니다. try 절에서 원래 실행하고자 했던 코드를 쭉 처리해나가다가 예외가 던져지면 catch블록이 받아냅니다. 

이때 catch절은 try블록에서 던질 예외 객체와 형식이 일치해야한다. 그렇지 않으면 던져진 예외는 아무도 받지 못해 "처리되지 않은 예외"로 남게됩니다. 

만약 try블록에서 실행하는 코드에서 한 종류 이상의 예외를 던질 가능성이 있다면, 이를 받아낼 catch 블록도 여러 개를 둘 수 있습니다.

try ~ catch 문을 이용해서 잘못된 인덱스를 통해 배열의 요소에 접근할 때 일어나는 IndexOutOfRangeException 예외를 안전하게 받아 처리 할 수 있습니다.

try 블록에서 코드를 실행하다가 예외가 던져지면 프로그램의 실행이 catch 절로 바로 뛰어 넘어옵니다. 만약 예외 때문에 try 블록의 자원 해제 같은 중요한 코드를 미처 실행하지 못한다면 이는 곧 버그를 만드는 원인입니다. 

Finally 절

finally 절은 try ~ catch문의 제일 마지막에 연결해서 사용한다. 

예외처리를 할 때 자원 해제같은 뒷마무리를 우아하게 할 수 있도록 finally 절을 사용합니다.

 

예외 던지기

try ~ catch 문으로 예외를 받는다는 것은 어디선가는 예외를 던진다는 말입니다. 
예외는 throw문을 이용해서 던집니다. throw문을 통해 던지 예외는 catch문을 통해 받습니다.

728x90

'Programming > C#' 카테고리의 다른 글

c#_12 : LINQ , JOIN  (0) 2020.06.12
c#_11 : 대리자와 이벤트  (0) 2020.06.12
c#_9 : Oracle과 C# 연동 방법과 선언  (0) 2020.06.10
c#_8 : 배열과 컬렉션 그리고 인덱서  (0) 2020.06.10
c# _7 : 프로퍼티  (0) 2020.06.10