회원 로그인
|
예외와 예외 처리
예외
프로그램(컴파일 된 파일)을 실행하여 생기는 오류를 예외라 한다.
프로그램을 실행 했을 때 일어나는 오류를 예외(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개(1/15페이지)
번호 | 제목 | 글쓴이 | 조회 | 날짜 |
---|---|---|---|---|
285 | [Python] 동적 import - 모듈을 변수로 받아오기 | 푸딩뱃살 | 413 | 2022.10.27 10:45 |
284 | [Python] 파이썬 3.7.7과 3.9.7의 os.path.expanduser() 차이 | 푸딩뱃살 | 456 | 2022.08.18 12:22 |
283 | [Python] error: Microsoft Visual C++ 9.0 is required. | 푸딩뱃살 | 684 | 2022.08.03 13:35 |
282 | [Python] pyscript | 푸딩뱃살 | 454 | 2022.06.09 11:21 |
281 | [Python] float is / float not is | 푸딩뱃살 | 593 | 2022.03.02 15:03 |
280 | [Python] 이터널 문자열 f | 푸딩뱃살 | 833 | 2022.01.27 16:35 |
279 | [Python] is와 ==의 차이 | 푸딩뱃살 | 485 | 2021.11.25 15:54 |
278 |
[Python] Error: ImportError: file |
푸딩뱃살 | 916 | 2021.11.16 11:24 |
277 | [Python] 파이썬 디컴파일 - uncompyle6 | 푸딩뱃살 | 774 | 2021.11.10 14:46 |
276 | [Python] 파이썬 확장자 설명 | 푸딩뱃살 | 550 | 2021.11.03 14:38 |
275 | [참고] 웹 fbx 뷰어 | 푸딩뱃살 | 470 | 2021.10.19 15:46 |
274 | [Python] enumerate() | 푸딩뱃살 | 500 | 2021.10.13 14:44 |
273 | [Python] 아나콘다에서 가상 환경 | 푸딩뱃살 | 720 | 2020.11.21 00:26 |
272 | [Python] pip로 설치 때 퍼미션 에러 | 푸딩뱃살 | 1266 | 2020.06.06 17:13 |
271 | [Python] OpenCV 10-3. 이미지 Thresholding - Otsu's Binarizatio | 푸딩뱃살 | 674 | 2020.06.05 14:01 |
270 | [Python] OpenCV 10-2. 이미지 Thresholding - Adaptive Threshold | 푸딩뱃살 | 694 | 2020.06.05 13:58 |
269 | [Python] OpenCV 10-1. 이미지 Thresholding | 푸딩뱃살 | 578 | 2020.06.05 13:56 |
268 | [Python] OpenCV 9-2. 색 추적 | 푸딩뱃살 | 772 | 2020.06.02 23:29 |
267 | [Python] OpenCV 9-1. 색공간 바꾸기 | 푸딩뱃살 | 640 | 2020.06.02 23:27 |
266 | [Python] OpenCV 8-3. 이미지 비트 연산 | 푸딩뱃살 | 530 | 2020.06.02 23:21 |