[C# 에러] Substring 에러 – “System.ArgumentOutOfRangeException” 예외 처리하는 방법
- C#/C# 문법
- 2019. 8. 31. 01:00
안녕하세요~~
오늘은 제가 최근에 프로그래밍을 하면서 만났던 예외가 있어서 해당 Error 예외 처리하는 방법을 알려드리고자 해요.
C#에서 문자열 자르는 함수인 Substring 함수 다들 아실텐데요!
Substring 함수를 사용하면서 실수를 많이 하는 부분이 있습니다.
예외 처리가 되지 않은 코드
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks;
namespace Error { class Program { static void Main(string[] args) { string str = "abcdefg"; string tmpStr = string.Empty;
tmpStr = str.Substring(7, 3);
Console.WriteLine(tmpStr); } } }
|
실행 결과
이처럼 “System.ArgumentOutOfRangeException” 에러가 발생하게 되는데요.
이 메시지가 발생한 이유는 현재 str 변수에 총 7자리의 문자열인 “abcdefg”를 저장하고 있는데 사용자가 str 변수에서 7자리번째 이후의 3자리를 출력하려고 해서 발생하는 에러입니다.
str 변수는 총 7자리의 문자열인데 당연히 7자리 뒤의 문자가 없는데 그 문자를 출력하려니까 에러가 나는 거겠죠?
그래서 Substring을 사용하실 때에는 아래와 같이 Length를 이용하여 예외처리를 해주셔야 합니다.
예외 처리 된 소스코드
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks;
namespace Error { class Program { static void Main(string[] args) { string str = "abcdefg"; string tmpStr = string.Empty;
if (str.Length >= 10) { tmpStr = str.Substring(7, 3); } else { tmpStr = str.Substring(3, 3); }
Console.WriteLine(tmpStr); } } }
|
이처럼, If문에 해당 길이의 Length가 Substring할 총 문자열의 길이 만큼의 크기가 되면 Substring 진행 하고, 그렇지 않다면 그보다 작은 크기로 문자를 자르도록 코드를 작성해 주시면 “System.ArgumentOutOfRangeException” 예외는 발생하지 않을거에요ㅎㅎ
실행 결과
다음에 또 새로운 에러를 만나게 되면 글을 쓰도록 하겠습니다~~
감사합니다!ㅎㅎ
'C# > C# 문법' 카테고리의 다른 글
[C# 문법] C# Thread 클래스 매개변수 전달하는 방법 (0) | 2019.09.07 |
---|---|
[C# 문법] C#에서 현재 사용자의 바탕화면 경로 가져오는 방법 (0) | 2019.09.05 |
[C# 문법] 자료구조 Stack 이란? (0) | 2019.08.30 |
[C# 문법] Linq Join 구문 사용 예제 (0) | 2019.08.20 |
[C#] 특정 경로 파일 삭제하는 방법 (날짜별 지우기) (2) | 2019.08.19 |
이 글을 공유하기