출저 참고 : http://blog.eairship.kr/149 (누구나가 다 이해할 수 있는 프로그래밍 첫걸음 블로그)
를 공부하면서 나중에 다시보기 쉽게 정리한 것입니다. 원본은 위 글입니다.!
try~catch 문
1 2 3 4 5 6 7 8 | try { // ... } catch (Exception e) { // 예외 발생 시 처리부분 } | cs |
- 예외가 발생할만한 코드를 try 문에 넣고 catch문은 예외 발생시 처리할 코드를 넣는다.
- 사용 예시
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 30 31 | using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ConsoleApplication35 { class Program { static void Main(string[] args) { Console.WriteLine(Division(5, 0)); Console.WriteLine(Division(10, 2)); Console.WriteLine(Division(49, 7)); } static int Division(int a, int b) { try { return a / b; } catch (DivideByZeroException e) { Console.WriteLine(e.Message); return -1; } } } } | cs |
결과 : 0으로 나누려 했습니다.
-1
5
7
finally 문
- try 문에서 예외가 발생하더라도 마지막에 무조건 실행되는 영역
- 자원을 해제하거나, 열려 있는 파일 등을 닫을 때 사용
- 사용 예시
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 30 31 32 33 34 35 36 37 38 | using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.IO; using System.Threading.Tasks; namespace ConsoleApplication35 { class ClassFinally { public static void Main() { StreamReader sreader = null; StreamWriter swriter = null; try { sreader = new StreamReader(File.Open("A.txt", FileMode.Open)); swriter = new StreamWriter(File.Open("B.txt", FileMode.Append, FileAccess.Write)); while (sreader.Peek() != -1) { swriter.WriteLine(sreader.ReadLine()); } } catch (Exception e) { Console.WriteLine(e.Message); } finally { if (sreader != null) sreader.Close(); if (swriter != null) swriter.Close(); } } } } | cs |
throw 문
- 예외를 던지는 역할
- 상위 호출 메소드로 Exception 객체를 전달하는 데 쓰임.
- try~catch 내에서 사용 될 수도 있고, 독립적으로도 사용 가능.
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 30 31 32 33 | using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ConsoleApplication35 { class Program { static void Main(string[] args) { try { Console.WriteLine(Division(10, 2)); Console.WriteLine(Division(49, 7)); Console.WriteLine(Division(5, -1)); } catch (Exception e) { Console.WriteLine(e.Message); } } static int Division(int a, int b) { if (a <= 0 || b <= 0) throw new Exception("0 또는 음수가 오는 것을 허용하지 않습니다."); else return a / b; } } } | cs |
결과 : 5
7
0 또는 음수가 오는 것을 허용하지 않습니다.
'NOTE > Programming' 카테고리의 다른 글
[C#] Reflection && Attributes (0) | 2018.04.01 |
---|---|
[C#] 컬렉션 (0) | 2018.04.01 |
[C#] 인터페이스 (0) | 2018.04.01 |
[C#] 확장 메소드, 분할 클래스, 중첩 클래스 (0) | 2018.04.01 |
[C#] 클래스의 상속 (0) | 2018.04.01 |