티스토리 뷰
======================================================
안녕하세요 Doridori 입니다.
이번 강의는 예외처리 (Exception)에 대한 강의 입니다.
올해 첫 강의 입니다.
간단한 내용이지만 알아두면 유용하게 사용되기도 하는 내용입니다.
예외처리를 잘해두면 프로그램이 몰래 죽는 경우도 쉽게 찾을 수 있고 프로그램이 안정성있게 잘 돌아가면 사용자들도 믿고 사용할수 있는 프로그램이라고 생각하지 않을까 합니다.
올해도 힘내보시죠~!
화이팅!!
======================================================
예외처리 (Exception)
Source UI) Study_28_Exception 2 (Sample) (UI).zip
Soruce 전체) (이번에는 동영상 1번에 대한 Source와 2번에 대한 Source가 별도로 있습니다.)
Study_28_Exception 1 (Main).zip
Study_28_Exception 2 (Sample).zip
예외처리의 경우 발생을 하지않게 코딩하는것이 가장 좋겠지만 여러사람이 짜는 프로그램이라면 예외가 발생하지 않을 수 없습니다.
그래서 유지보수를 한다는 느낌으로 예외처리를 잘 걸어 두시고 예외가 발생 할 때마다 줄여가는것이 좋은 방법 같습니다. ^^
예외처리는 하나만 아시면 됩니다.
Exception~! 끝~!
UI)
이번에는 예외처리에 대한 설명에 대한 강의를 하나 진행 하고 끝내려고 하다가 뭔가 밍밍한 느낌이어서 UI예제를 하나 별도로 만들었습니다.
UI 예제를 하면서 예외처리에 대한 내용과 처리방법에대해서도 넣으려고 노력 했습니다. ^^:;
예외처리 1강을 Main으로 보시고 이런식으로 적용하면 되겠구나 정도로 봐주시면 좋을 것 같습니다.
강의)
1) Exception의 종류와 사용 방법, 순서에 대해서 설명해 놓았습니다.
요지는 예외처리 Class의 경우 상속 받은 형태로 구성되어 있으면 먼저 호출하는 예외의 경우 자식 Class의 예외처리를 호출하고 가장 아래 줄에 부모 Class의 예외를 호출 하면 됩니다.
Exception > SystemException > NullReferenceException, OverflwException, argumentException . . .
(이것저것 다 귀찮고 예외만 잡아내면 된다 싶으시면 Exception 만 예외로 잡으시면 됩니다.)
2) 색칠하기 예제를 만들어 봤는데 그림을 그려서 색칠하면 좋겠으나 시간 관계상 Panel에 색칠하는 형태로 진행 하였습니다.
배경의 경우 색상의 Alpha 값 적용을 확인하기 위해 넣었다고 보시면 될것 같습니다.
중간중간 예외를 처리하는 방법도 넣었으니 참고해서 보시면 좋을것 같습니다.
Source)
Exception 1 (Main) 과 Exception 2 (Sample)은 두개가 다른 프로그램 입니다. (혼동하시면 아니되옵니다. ^^;;)
Exception 1 (Main)
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 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 | using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace _28_Exception { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { try { // FormatException int iCheck = 0; if (int.TryParse(textBox1.Text, out iCheck)) { //int.Parse(textBox1.Text); } else { label1.Text = "Data Form이 맞지 않습니다."; } // ArgumentException string strTest = string.Empty; List<string> LStringCheck = new List<string>(); LStringCheck.Add("TEST1"); //for (int i = 0; i < 2; i++) //{ // strTest = LStringCheck[i]; //} foreach (string ostrText in LStringCheck) { strTest = ostrText; } // NullReferenceException List<object> LObject = null; if (LObject != null) { object oRet = LObject[0]; } // InvalidCastException object oCheck = "fgdfg"; if (oCheck is int) { int iCastCheck = (int)oCheck; } } catch (FormatException ex) { label1.Text = ex.ToString(); } catch (ArgumentException ex) { label1.Text = ex.ToString(); } catch (NullReferenceException ex) { label1.Text = ex.ToString(); } catch (InvalidCastException ex) { label1.Text = ex.ToString(); } catch (Exception ex) { label1.Text = ex.ToString(); } finally { //label1.Text = "함수를 완료하기 전 실행"; } } } } | cs |
Exception 2 (Sample)
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 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 | using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace _28_Exception_Ex { public partial class Form1 : Form { Dictionary<string, Color> dColor = new Dictionary<string, Color>(); // 색상정보를 담아 둘 Dictionary Color oSelectColor = new Color(); // 현재 선택 된 생상 정보를 가지고 있을 변수 /// <summary> /// 프로그램 진입점 /// </summary> public Form1() { InitializeComponent(); } /// <summary> /// ColorDialog Event를 불러올 Panel /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void pColor_MouseClick(object sender, MouseEventArgs e) { DialogResult dRet = cDialogColor.ShowDialog(); // ColorDialog를 불러서 선택한 뒤 결과 값까지 받아 옴 if (dRet == DialogResult.OK) //결과 값이 정상일 때 선택 된 Color를 Panel에 뿌려줌 { pColor.BackColor = cDialogColor.Color; } lblColorinfo.Text = pColor.BackColor.ToString(); } /// <summary> /// trackbar의 값이 변할때 불러오는 Event /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void tbarAlpha_Scroll(object sender, EventArgs e) { pColor.BackColor = Color.FromArgb(tbarAlpha.Value, pColor.BackColor); // 색상 값에 Alpha 값을 변경해서 다시 저장 함 lblColorinfo.Text = pColor.BackColor.ToString(); } /// <summary> /// 저장 Button을 Click 했을 경우 선택 색상을 사전에 저장 한 뒤 사전에 있는 값을 List에 뿌려 줌 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btnColorSave_Click(object sender, EventArgs e) { try { Color oColor = pColor.BackColor; dColor.Add(oColor.ToString(), oColor); LBoxRefresh(); } catch (ArgumentException ex) { MessageBox.Show(ex.ToString()); } } /// <summary> /// 삭제 Button을 Click 했을 경우 List에서 선택된 값과 같은 key를 가진 사전에 있는 값을 삭제 한뒤 List를 다시 뿌려 줌 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btnColorDelete_Click(object sender, EventArgs e) { try { // 사전에 있는 색상을 삭제하고 if (lboxColor.SelectedItem != null && dColor.ContainsKey(lboxColor.SelectedItem.ToString())) { dColor.Remove(lboxColor.SelectedItem.ToString()); } else { MessageBox.Show("삭제할 Item이 없거나 사전에 키가 없습니다."); } // List를 다시 화면에 뿌려준다 LBoxRefresh(); } catch (NullReferenceException ex) { MessageBox.Show(ex.ToString()); } } /// <summary> /// 사전에 있는 값으로 ListBox를 새로 그려 줌 /// </summary> private void LBoxRefresh() { try { lboxColor.Items.Clear(); foreach (string okey in dColor.Keys) { lboxColor.Items.Add(okey); } } catch (Exception ex) { MessageBox.Show(ex.ToString()); } } /// <summary> /// ListBox의 선택 값이 변경 되면 변경 된 선택 값의 색상 정보를 oSelectColor 변수에 저장 함 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void lboxColor_SelectedIndexChanged(object sender, EventArgs e) { oSelectColor = dColor[lboxColor.SelectedItem.ToString()]; } /// <summary> /// 그림 판에 있는 Panel 중 선택 된 Panel에 대해서 저장한 색상 정보를 기준으로 다시 그려 줌 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void Panel_Click(object sender, MouseEventArgs e) { try { //TextBox oTbox = sender as TextBox; //TextBox oTbox = (TextBox)sender; if (sender is Panel) { Panel oPanel = sender as Panel; oPanel.BackColor = oSelectColor; } else if(sender is Button) { } } catch (Exception ex) { MessageBox.Show(ex.ToString()); } } } } | cs |
'C# > C# 강좌 Winform' 카테고리의 다른 글
Doridori C# 강의) 30.Lambda (람다식) (8) | 2019.02.08 |
---|---|
Doridori C# 강의) 29.UserControl (사용자 정의 컨트롤) (18) | 2019.01.25 |
Doridori C# 강의) 27.Thread Stop (16) | 2018.12.30 |
Doridori C# 강의) 26.Thread (19) | 2018.12.25 |
Doridori C# 강의) 25.Delegate 2 (delegate와 event) (25) | 2018.12.09 |
- Total
- Today
- Yesterday
- 술
- 도리도리
- 맥주
- 와인
- C# 강의
- 맛집
- C# 기초 강의
- 아이랑
- 전통주
- C#
- C# 강좌
- 칵테일
- 가볼만한 곳
- 모바일
- 보드카
- 소주
- 도리도리 C#
- 나들이
- 가볼만한곳
- WinForm
- 막걸리
- Visual Studio
- 프로그램 강의
- 서울
- 위스키
- 게임
- 하이볼
- 증류주
- 광저우
- 주말
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |