회원 로그인
|
예외와 예외 처리
예외
프로그램(컴파일 된 파일)을 실행하여 생기는 오류를 예외라 한다.
프로그램을 실행 했을 때 일어나는 오류를 예외(Exception:익셉션)이라 한다. 이런 오류들을 대응하는 것이 예외 처리라 한다.
이러므로써 프로그램의 오류를 알리고 종료되거나 넘추는 현상을 막을 수 있다.
예외 처리 방법
예외가 발생할 것 같은 곳에 try 사용, 예외가 발생하면 catch 뒤로 점프한다.
try { } - 안에 예외가 발생할 수도 있는 명령어들을 명시한다.
catch(Exception e) { } - 인수(로 예외의 내용을 나타내는 예외 객체를 받는다.
finally { } - {} 안의 처리는 예외가 발생했는지 여부와 상관없이 실행된다.
try ~ catch ~ finally 문
예외를 의도적으로 일으키고 싶은 경유에 throw(스로)문을 사용한다.
예외 클래스 종류
printDivide() 함수에서 예외 발생
0으로 나누려고 했습니다.
종료
참고) C#이 보이는 그림책
프로그램(컴파일 된 파일)을 실행하여 생기는 오류를 예외라 한다.
프로그램을 실행 했을 때 일어나는 오류를 예외(Exception:익셉션)이라 한다. 이런 오류들을 대응하는 것이 예외 처리라 한다.
이러므로써 프로그램의 오류를 알리고 종료되거나 넘추는 현상을 막을 수 있다.
예외 처리 방법
예외가 발생할 것 같은 곳에 try 사용, 예외가 발생하면 catch 뒤로 점프한다.
try { } - 안에 예외가 발생할 수도 있는 명령어들을 명시한다.
catch(Exception e) { } - 인수(로 예외의 내용을 나타내는 예외 객체를 받는다.
finally { } - {} 안의 처리는 예외가 발생했는지 여부와 상관없이 실행된다.
try ~ catch ~ finally 문
try { 예외가 발생할 수도 있는 명령줄 } chatch (예외클래스명 변수명) { 예외 발생 시에 실행하는 명령줄 } finally { 명령줄 }throw 문
예외를 의도적으로 일으키고 싶은 경유에 throw(스로)문을 사용한다.
// throw하지 않으면 바깥쪽 catch는 호출되지 않는다. try { ...... try { ...... // 오류 처리 } catch (Exception ex1) { // 예외 클래스의 객체를 생성하고 throw한다. Exception ex1 = new Exception(); ex1.Message = "오류!"; throw ex1; } } catch(Exception ex2) { // throw 된 예외를 바깥쪽 블록으로 캐치한다. Console.WriteLine(ex2.Message); // ex2,Message 예외의 종류를 나타내는 문자열을 반환하는 속성 }
예외 클래스 종류
예외 클래스 | 출력 메세지 |
DivideByZeroException | 0으로 나누었습니다. |
IndexOutOfRangeException | 첨자가 배열의 범위를 초과했습니다. |
InvalidCastException | 실행할 때 형변환이 올바르지 않습니다. |
NullReferenceException | 값이 null인 객체 변수를 참조했습니다. |
OutOfMemoryException | 메모리 여유 공간이 부족하여 호출에 실패했습니다. |
OverflowException | 오버플로가 발생했습니다. |
FileNotFoundException | 존재하지 않는 파일에 액세스하는 데 실패했습니다. |
Exception | 모종의 예외가 발생했습니다. |
// 예외 클래스 사용 try{ ...... } catch (DivideByZeroException e1) { ...... } catch (FileNotFoundException e2) { ...... }
// 예제 using System; using System.IO; class Calc { public void printDivide(int x, int y) { int z; try { z = x / y; Console.WriteLine(z); } catch (Exception e) { Console.WriteLine("printDivide() 함수에서 예외 발생"); Console.WriteLine(e.Message); } } } class ExceptionSample { static void Main() { Calc calc = new Calc(); calc.printDivide(10, 0); Console.WriteLine("종료"); } }결과
printDivide() 함수에서 예외 발생
0으로 나누려고 했습니다.
종료
참고) C#이 보이는 그림책
댓글 0개
| 엮인글 0개
285개(6/15페이지)
번호 | 제목 | 글쓴이 | 조회 | 날짜 |
---|---|---|---|---|
185 | [PHP] 회원가입 + 로그인 스크립트 (with Unity) [2+1] | 푸딩뱃살 | 12240 | 2015.12.06 17:31 |
184 | [C#] C# 추천 서적 | 푸딩뱃살 | 1320 | 2015.12.06 17:16 |
183 | [C/C++] C++ 참고 사이트 | 푸딩뱃살 | 1181 | 2015.12.04 16:13 |
182 | [PHP] 클래스 | 푸딩뱃살 | 3580 | 2015.12.04 14:40 |
181 | [PHP] CodeIgniter(코드이그나이트) | 푸딩뱃살 | 2931 | 2015.12.04 14:40 |
180 | [C#] Delegate (델리게이트) (with Unity) | 푸딩뱃살 | 6266 | 2015.12.01 10:44 |
179 | [PHP] php 함수 | 푸딩뱃살 | 2218 | 2015.11.30 15:33 |
178 | [PHP] Dictionary (딕셔너리) | 푸딩뱃살 | 2868 | 2015.11.27 12:37 |
177 | [PHP] 배열 | 푸딩뱃살 | 2170 | 2015.11.27 12:37 |
176 | [PHP] 변수 선언 / 산술 연산 | 푸딩뱃살 | 2182 | 2015.11.27 11:14 |
175 | [C#] Dictionary (딕셔너리) (with Unity) [3+3] | 푸딩뱃살 | 14483 | 2015.11.25 10:29 |
174 | [C#] List (리스트) (with Unity) | 푸딩뱃살 | 12087 | 2015.11.24 10:22 |
173 | [C#] Generic (제네릭) (with Unity) | 푸딩뱃살 | 4888 | 2015.11.22 12:32 |
172 | [C/C++] Templete (템플릿) | 푸딩뱃살 | 2045 | 2015.11.22 12:15 |
171 | [C#] 키보드 입력 | 푸딩뱃살 | 3568 | 2015.11.21 18:00 |
>> | [C#] 예외와 예외 처리 | 푸딩뱃살 | 4123 | 2015.11.21 17:39 |
169 | [C#] Struct (구조체) (with Unity) | 푸딩뱃살 | 5123 | 2015.11.18 22:08 |
168 | [C#] Property (프로퍼티) (with Unity) | 푸딩뱃살 | 2443 | 2015.11.18 10:50 |
167 | [C#] interface (인터페이스) (with Unity) | 푸딩뱃살 | 3306 | 2015.11.15 17:32 |
166 | [C#] 스트림 (stream) - 문자, 바이너리 읽기/쓰기 | 푸딩뱃살 | 12780 | 2015.11.14 18:24 |