์ฑํฐ 12 ์์ธ ์ฒ๋ฆฌํ๊ธฐ
์ด ์ฅ์ ํต์ฌ ๊ฐ๋ ๊ตฌ์กฐ์ ์์ธ ์ฒ๋ฆฌ๊ฐ ๋ฌด์์ธ์ง ์ดํดํ๋ค
try~catch~finally ๋ฌธ์ ์ด์ฉํ ์์ธ ์ฒ๋ฆฌ ๋ฐฉ๋ฒ์ ์ตํ๋ค
System.Exception ํด๋์ค๋ฅผ ์ดํดํ๋ค
throw ๋ฌธ์ ์ด์ฉํ์ฌ ์์ธ๋ฅผ ๋์ง๋ ๋ฐฉ๋ฒ์ ์ตํ๋ค
์ฌ์ฉ์ ์ ์ ํด๋์ค๋ฅผ ์ ์ํ๊ณ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ์ตํ๋ค
์์ธ์ ๋ํ์ฌ
์ ์: ํ๋ก๊ทธ๋๋จธ๊ฐ ์๊ฐํ๋ ์๋๋ฆฌ์ค์์ ๋ฒ์ด๋๋ ์ฌ๊ฑด, ์ด๊ฒ์ ์์ธ๋ผ๊ณ ๋ถ๋ฅธ๋ค.
์1) ์ซ์๊ฐ ์ ๋ ฅ๋์ด์ผ ํ๋ ๋ณ์์ ๋ฌธ์์ด ์ ๋ ฅ ์๋
์2) ํ์ผ์ ์ ์ฅ์ ํ๋๋์คํฌ ์ฉ๋ ์์ง
์์ธ์ฒ๋ฆฌ : ํ๋ก๊ทธ๋จ์ ์ค๋ฅ๋ ๋ค์ด์ผ๋ก ์ด์ด์ง์ง ์๋๋ก ์ ์ ํ๊ฒ ์ฒ๋ฆฌํ๋ ๊ฒ
using System;
using System.Collections;
using static System.Console;
namespace TryCatch
{
class MainApp
{
static void Main(string[] args)
{
int[] arr = { 1, 2, 3 };
for(int i=0; i<5; i++)
{
WriteLine(arr[i]);
}
WriteLine("์ข
๋ฃ");
}
}
}
์๋ฌด๋ฐ ์์ธ ์ฒ๋ฆฌ๋ ํ์ง ์์๊ธฐ ๋๋ฌธ์ ํ๋ก๊ทธ๋จ์ด ๋ค์ด๋์๋ค.
๊น์ง ์ถ๋ ฅ๋๊ณ 15๋ผ์ธ์์ i๊ฐ '๋ฐฐ์ด์ ํฌ๊ธฐ -1'์ ๋์ด์ฐ๊ธฐ ๋๋ฌธ์ ์์ธ๋ฅผ ์ผ์ผํค๊ณ ์ข ๋ฃ๋๋ค. ์ดํ์ ์ฝ๋๋ค์ด ์คํ๋์ง ์์๋ค. ์์ธ๊ฐ ๋ฐ์ํด์ ํ๋ก๊ทธ๋จ์ด ์ข ๋ฃ๋์๊ธฐ ๋๋ฌธ์ด๋ค.
์์ธ ๋ฐ์: 'System.IndexOutOfRangeException'(Hello.exe)
์ฒ๋ฆฌ๋์ง ์์ 'System.IndexOutOfRangeException' ํ์์ ์์ธ๊ฐ Hello.exe์์ ๋ฐ์ํ์ต๋๋ค.
์ธ๋ฑ์ค๊ฐ ๋ฐฐ์ด ๋ฒ์๋ฅผ ๋ฒ์ด๋ฌ์ต๋๋ค.
์ด ์์ ํ๋ก๊ทธ๋จ์ฒ๋ผ ์์ธ๋ฅผ ์ฒ๋ฆฌํ์ง ๋ชปํด ์ฃฝ๋ ํ๋ก๊ทธ๋จ์ ์๋ฌด๋ฆฌ ๊ธฐ๋ฅ์ด ๋ง์๋ ์ ๋ขฐํ ์ ์๋ค. ํ๋ก๊ทธ๋๋จธ๋ ์์ ์ด ์์ฑํ ์ฝ๋ ๋ด์์ ์์ธ๊ฐ ์ฒ๋ฆฌ๋๋๋ก ์กฐ์น๋ฅผ ์ทจํด์ผ ํ๋ค.
์์ ์์ ํ๋ก๊ทธ๋จ์์ ๋ฐฐ์ด์ด IndexOutOfRangeException ์์ธ๋ฅผ ๋์ก๋๋ฐ Main()๋ฉ์๋๊ฐ ์ฒ๋ฆฌํ์ง ๋ชปํ๋ค. ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๋ฐฉ๋ฒ์ ์์ธ๋ฅผ Main()๋ฉ์๋๊ฐ '๋ฐ์ผ๋ฉด'๋๋ค. C#์์๋ ์์ธ๋ฅผ ๋ฐ์ ๋ try~catch๋ฌธ์ ์ด์ฉํ๋ค.
try~catch๋ก ์์ธ๋ฐ๊ธฐ
try~catch๋ ๊ตฌ์กฐ์ ์ผ๋ก ์์ธ ์ฒ๋ฆฌ๋ฅผ ํ ์ ์๊ฒ ํด์ฃผ๋ ๋ฌธ๋ฒ
try ๋ธ๋ก์๋ ์คํํ๊ณ ์ ํ๋ ์ฝ๋, catch ๋ธ๋ก์๋ ์์ธ ๋ฐ์์ ์ฒ๋ฆฌํ ์ฝ๋ ์์ฑ
try
{
//์คํํ๊ณ ์ ํ๋ ์ฝ๋
}
catch(์์ธ ๊ฐ์ฒด_1)
{
//์์ธ๊ฐ ๋ฐ์ํ์ ๋์ ์ฒ๋ฆฌ
}
catch(์์ธ ๊ฐ์ฒด_2)
{
//์์ธ๊ฐ ๋ฐ์ํ์ ๋์ ์ฒ๋ฆฌ
}
try ์ ์ ์ฝ๋ ๋ธ๋ก์๋ ์์ธ๊ฐ ์ผ์ด๋์ง ์์ ๊ฒฝ์ฐ์ ์คํ๋์ด์ผ ํ ์ฝ๋๋ค์ด ๋ค์ด๊ฐ๊ณ ,
catch ์ ์๋ ์์ธ๊ฐ ๋ฐ์ํ์ ๋์ ์ฒ๋ฆฌ ์ฝ๋๊ฐ ๋ค์ด๊ฐ๋ค.
try: ์๋ํ๋ค
catch : ์ก๋ค ๋๋ ๋ฐ๋ค ๋ผ๋ ๋ป
try ์ ์์ ์๋ ์คํํ๊ณ ์ ํ๋ ์ฝ๋๋ฅผ ์ญ ์ฒ๋ฆฌํด๋๊ฐ๋ค๊ฐ ์์ธ๊ฐ ๋์ ธ์ง๋ฉด catch ๋ธ๋ก์ด ๋ฐ์๋ธ๋ค.
์ด๋ catch์ ์ try ๋ธ๋ก์์ ๋์ง ์์ธ ๊ฐ์ฒด์ ํ์์ด ์ผ์นํด์ผ ํ๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด ๋์ ธ์ง ์์ธ๋ ์๋ฌด๋ ๋ฐ์ง ๋ชปํด '์ฒ๋ฆฌ๋์ง ์์ ์์ธ'๋ก ๋จ๊ฒ ๋๋ค. ๋ง์ฝ try ๋ธ๋ก์์ ์คํํ๋ ์ฝ๋์์ ์ฌ๋ฌ ์ข ๋ฅ์ ์์ธ๋ฅผ ๋์ง ๊ฐ๋ฅ์ฑ์ด ์๋ค๋ฉด, ์ด๋ฅผ ๋ฐ์๋ผ catch ๋ธ๋ก๋ ์ฌ๋ฌ๊ฐ๋ฅผ ๋ ์ ์๋ค.
์์ ์์ ์
try~catch ๋ฌธ์ ์ฌ์ฉํด๋ณด๋๋ก ํ๋ค.
์์ธ๋ฅผ ์์ ํ๊ฒ ๋ฐ์ ์ฒ๋ฆฌํ๊ณ ํ๋ก๊ทธ๋จ์ ์ข ๋ฃ์ํค๋๋ก ์์ ํ๋ค.
try~catch ๋ฌธ์ ์ด์ฉํด์ ์๋ชป๋ ์ธ๋ฑ์ค๋ฅผ ํตํด ๋ฐฐ์ด์ ์์์ ์ ๊ทผํ ๋ ์ผ์ด๋๋ IndexOutOfRangeException ์์ธ๋ฅผ ์์ ํ๊ฒ ๋ฐ์ ์ฒ๋ฆฌํ๋ค.
using System;
using System.Collections;
using static System.Console;
namespace TryCatch
{
class MainApp
{
static void Main(string[] args)
{
int[] arr = { 1, 2, 3 };
try
{
for(int i=0; i<5; i++)
{
WriteLine(arr[i]);
}
}
catch (IndexOutOfRangeException e)
{
WriteLine($"์์ธ๊ฐ ๋ฐ์ํ์ต๋๋ค. : {e.Message}");
}
WriteLine("์ข
๋ฃ");
}
}
}
i๊ฐ 3์ด ๋๋ฉด IndexOutOfRangeException ๊ฐ์ฒด๊ฐ ๋์ ธ์ง๊ณ catch ๋ธ๋ก์ด ์ด๋ฅผ ๋ฐ์๋ธ๋ค.
ํนํ catch ๋ฌธ์ ์์ ๊ฐ์ด ๋ณต์๊ฐ๋ก ์ธ ์ ์๋ค. ๋ค์ํ ์์ธ ์ํฉ์ ๋์ํ๊ธฐ ์ํด์์ด๋ค.
'C# > ์ด๊ฒ์ด C#์ด๋ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
์์ธ ์ฒ๋ฆฌํ๊ธฐ(3) ์์ธ ๋์ง๊ธฐ (0) | 2022.04.17 |
---|---|
์์ธ ์ฒ๋ฆฌํ๊ธฐ(2) System.Exception ํด๋์ค (0) | 2022.04.17 |
59. foreach๋ฅผ ์ฌ์ฉํ ์ ์๋ ์ผ๋ฐํ ํด๋์ค (0) | 2022.02.28 |
58. ์ผ๋ฐํ ์ปฌ๋ ์ (0) | 2022.02.28 |
57. ์ผ๋ฐํ ํ๋ก๊ทธ๋๋ฐ ์์ ๋ชจ์ (0) | 2022.02.28 |