[C#] out of range 에러에 대처하는 천재적인 방법

2023. 7. 4. 11:28· Server/C#

썸네일

서적을 읽다 정말 천재적인 방법을 발견하여 기록해 보겠습니다!

 

배열을 사용하다 보니 가장 자주 발생하는 에러가 System.IndexOutOfRangeException 에러이더군요.

 

모든 상황에서 index 에러를 방지하는 것은 쉽지 않습니다.

아래와 같이 설계하면 해당 예외를 대비할 수 있습니다.
get 메서드에서 예외 방지 조건을 추가하는 것입니다.

public class Program
{
    public static void Main(string[] args)
    {
        IntArray intArray = new IntArray();
        int a = intArray[10];
    }
}

public class IntArray
{
    private int size = 10;
    public int[] _items;

    public IntArray()
    {
        _items = new int[size];
    }

    public int this[int index]
    {
        get
        {
            if (index < 0 || index >= size)
            {
                return 999;
            }
            return _items[index];
        }
        set
        {
            _items[index] = value;
        }
    }
}

 

 

저는 위 예제에서 예외상황 발생 시 999를 리턴하도록 했지만, 이 방식은 제너릭 타입의 배열에서는 사용할 수 없습니다.

제너릭 타입의 배열을 사용할 때에는 default 예약어를 사용하도록 합니다.

 

public class Program
{
    public static void Main(string[] args)
    {
        TestArray<int> testArray = new TestArray<int>();
        int a = testArray[10];
    }
}

public class TestArray<T>
{
    private int size = 10;
    public T[] _items;

    public TestArray()
    {
        _items = new T[size];
    }

    public T this[int index]
    {
        get
        {
            if (index < 0 || index >= size)
            {
                return default(T);
            }
            return _items[index];
        }
        set
        {
            _items[index] = value;
        }
    }
}

 

 끝!

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

C#의 장점  (2) 2023.08.03
정확하게 코딩했는지 확인하자! 나의 프로그램 테스트 방법  (0) 2023.07.18
[C#] ??=  (0) 2023.06.20
[C#] FirstOrDefault  (0) 2023.06.20
C# 델리게이트  (0) 2023.06.09
'Server/C#' 카테고리의 다른 글
  • C#의 장점
  • 정확하게 코딩했는지 확인하자! 나의 프로그램 테스트 방법
  • [C#] ??=
  • [C#] FirstOrDefault
개발자 재은
개발자 재은
개발자 재은
개발자 재은
개발자 재은
전체
오늘
어제
  • 분류 전체보기 (72)
    • Client (5)
      • MSW (5)
    • Server (25)
      • AWS (2)
      • C# (15)
      • C# 비동기와의 전쟁 (5)
      • Linux (3)
      • MySQL (0)
      • Orleans(정리안됨) (0)
    • Error Note (2)
    • Side Project (15)
      • 안양시장 프로젝트 - TCP 서버개발 (15)
    • 일지 (25)
      • 일기장 (16)
      • 2022 MSW 해커톤 대상 후기 (5)
      • 자기소개 (0)
      • 미완성 포스트 (1)
      • 넥토리얼 합격 회고 (0)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.1
개발자 재은
[C#] out of range 에러에 대처하는 천재적인 방법
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.