๋ณธ๋ฌธ์œผ๋กœ ๋ฐ”๋กœ๊ฐ€๊ธฐ
728x90

*์ด ๊ธ€์€ <์ด๊ฒƒ์ด C#์ด๋‹ค> ์ฑ…์„ ๋ฐ”ํƒ•์œผ๋กœ ๊ณต๋ถ€ํ•œ ๊ธ€์ž…๋‹ˆ๋‹ค.

 

 

 

 

ํ”„๋กœ๊ทธ๋žจ์„ ์‚ฌ์šฉํ•˜๋Š” ์‚ฌ์šฉ์ž๋“ค์€ ์ •๋ง ์ฐฝ์˜์„ฑ์ด ๋‹๋ณด์ด๋Š” ์—ฌ๋Ÿฌ๊ฐ€์ง€ ๋ฐฉ๋ฒ•๋“ค์„ ์ ์šฉํ•˜๊ธฐ๋„ ํ•œ๋‹ค.

 

 

์ˆ ์ง‘ ํ”„๋กœ๊ทธ๋žจ์„ ๋งŒ๋“ค์–ด์„œ ์‚ฌ์šฉ์ž์—๊ฒŒ ์ฃผ๋ฌธ์„ ๋ฐ›์„ ์ค€๋น„๋ฅผ ํ•ฉ๋‹ˆ๋‹ค.
์‚ฌ์šฉ์ž๊ฐ€ ๋“ค์–ด์˜ค์ž, ํ™”์žฅ์‹ค์ด ์–ด๋”จ๋ƒ๊ณ  ๋ฌป์Šต๋‹ˆ๋‹ค.
์ˆ ์ง‘์€ ๋ชจ๋‘ ๋ถˆ์— ํƒ€๋ฒ„๋ ธ๊ณ , ๊ทธ๋ ‡๊ฒŒ ์ „๋ถ€ ์‚ฌ๋ผ์กŒ์Šต๋‹ˆ๋‹ค.

 

 

 

SNS์—์„œ ๊ฐ€๋” ๋ณผ ์ˆ˜ ์žˆ๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์œ ๋จธ์ธ๋ฐ, ์ง€๊ธˆ ๋”ฑ ๋น„์œ ํ•˜๊ธฐ ์ ๋‹นํ•œ ์ƒํ™ฉ์ธ ๊ฒƒ ๊ฐ™๋‹ค. ๋งŒ์•ฝ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ํŠธ๋žœ์žญ์…˜๊ณผ ๊ฐ™์€ ๋ถ€๋ถ„์—์„œ ์˜ค๋ฅ˜๋‚˜ ๋‹ค์šด์ด ๋ฐœ์ƒํ–ˆ์„ ๋•Œ, ์ฒ˜๋ฆฌํ•ด์ฃผ๋Š” ๋ถ€๋ถ„์ด ์—†๋‹ค๋ฉด ํ”ผํ•ด๋Š” ์น˜๋ช…์ ์ผ ๊ฒƒ์ด๋‹ค.

 

์ด๋ ‡๋“ฏ, ํ”„๋กœ๊ทธ๋žจ์ด ์˜ค๋ฅ˜๋ฅผ ์ผ์œผํ‚ค๊ฑฐ๋‚˜ ์‹ฌ์ง€์–ด ๋‹ค์šด๊นŒ์ง€ ์ผ์–ด๋‚˜์ง€ ์•Š๋„๋ก ์ž˜ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒƒ์ด ํ•„์š”ํ•˜๋‹ค. ์ด๊ฒƒ์„ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ(Exception Handling)์ด๋ผ๊ณ  ํ•œ๋‹ค.

 

 

 

์˜ˆ์™ธ ์ฒ˜๋ฆฌ (Exception Handling)

 

๋ฐฐ์—ด ๊ฐ์ฒด์— ์ž˜๋ชป๋œ ์ธ๋ฑ์Šค๋ฅผ ํ†ตํ•ด ์ ‘๊ทผํ•˜๋ฉด, ๋ฐฐ์—ด ๊ฐ์ฒด๊ฐ€ ์ด ๋ฌธ์ œ์— ๋Œ€ํ•œ ์ƒ์„ธ ์ •๋ณด๋ฅผ IndexOutOfRangeException์˜ ๊ฐ์ฒด์— ๋‹ด๋Š”๋‹ค.

class Program
{
    static void Main(string[] args)
    {
        int[] array = { 1, 2, 3 };

        for(int i = 0; i < 5; i++)
        {
            Console.WriteLine(array[i]);     // ๋ฐฐ์—ด์˜ ์ธ๋ฑ์Šค๋ฅผ ๋„˜์–ด์„œ๋Š” ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•จ
        }                                    // ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•œ ๋ถ€๋ถ„ ์ดํ›„์˜ ์ฝ”๋“œ๋“ค์€ ์‹คํ–‰๋˜์ง€ ์•Š์Œ
        Console.WriteLine("ํ”„๋กœ๊ทธ๋žจ ์ •์ƒ ์ข…๋ฃŒ");       // ์‹คํ–‰๋˜์ง€ ์•Š์Œ

    }
}

 

 

๊ทธ๋ฆฌ๊ณ  ํ˜ธ์ถœ์ž(Main() ๋ฉ”์†Œ๋“œ)์—๊ฒŒ ๋˜์ ธ์ง€๊ฒŒ ๋˜๋Š”๋ฐ, Main() ๋ฉ”์†Œ๋“œ๋Š” ์ด๋Ÿฐ ์˜ˆ์™ธ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ถ€๋ถ„์ด ์—†๋‹ค.

์˜ˆ์™ธ๋ฅผ ์ฒ˜๋ฆฌํ•  ๋ฐฉ๋„๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์— ์ด ์˜ˆ์™ธ๋Š” ๋‹ค์‹œ CLR์—๊ฒŒ ๋˜์ ธ์ง€๊ฒŒ ๋˜๊ณ , CLR๊นŒ์ง€ ๋˜์ ธ์ง€๊ฒŒ ๋œ ์˜ˆ์™ธ๋Š” ์ฒ˜๋ฆฌ๋˜์ง€ ์•Š์€ ์˜ˆ์™ธ๊ฐ€ ๋œ๋‹ค. CLR์€ ์ฒ˜๋ฆฌ๋˜์ง€ ์•Š์€ ์˜ˆ์™ธ๋ฅผ ๋ฐ›๊ฒŒ ๋˜๋ฉด, ์˜ˆ์™ธ ๊ฐ์ฒด์— ๋‹ด๊ธด ๋‚ด์šฉ์„ ์ถœ๋ ฅํ•œ ํ›„ ํ”„๋กœ๊ทธ๋žจ์„ ๊ฐ•์ œ ์ข…๋ฃŒํ•œ๋‹ค.

 

ํ”„๋กœ๊ทธ๋žจ ๊ธฐ๋Šฅ์ด ์•„๋ฌด๋ฆฌ ๋งŽ๋”๋ผ๋„, ์˜ˆ์™ธ ์ฒ˜๋ฆฌ๋ฅผ ์ž˜ ํ•ด๋†“์ง€ ์•Š์œผ๋ฉด ์‹ ๋ขฐํ•  ์ˆ˜ ์—†๋Š” ํ”„๋กœ๊ทธ๋žจ์ด ๋œ๋‹ค.

์–ด๋–ป๊ฒŒ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ๋ฅผ ํ•ด์•ผ ํ•˜๋Š”์ง€ ๋‹ค์Œ ์ ˆ์—์„œ ์‚ดํŽด๋ณด์ž.

 

 

try ~ catch๋กœ ์˜ˆ์™ธ ๋ฐ›๊ธฐ

try
{
    // ์‹คํ–‰ํ•˜๊ณ ์ž ํ•˜๋Š” ์ฝ”๋“œ
}
catch ( ์˜ˆ์™ธ ๊ฐ์ฒด1)
{
    // ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๋•Œ ์ฒ˜๋ฆฌํ•  ์ฝ”๋“œ
}
catch ( ์˜ˆ์™ธ ๊ฐ์ฒด2)
{
    // ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๋•Œ ์ฒ˜๋ฆฌํ•  ์ฝ”๋“œ
}

 

try ์ ˆ์˜ ์ฝ”๋“œ ๋ธ”๋ก์—๋Š” ์˜ˆ์™ธ๊ฐ€ ์ผ์–ด๋‚˜์ง€ ์•Š์„ ๊ฒฝ์šฐ ์‹คํ–‰๋˜์–ด์•ผํ•  ์ฝ”๋“œ๋“ค์ด ๋“ค์–ด๊ฐ„๋‹ค.

catch ์ ˆ์˜ ์ฝ”๋“œ ๋ธ”๋ก์—๋Š” ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๋•Œ์˜ ์ฒ˜๋ฆฌ ์ฝ”๋“œ๋“ค์ด ๋“ค์–ด๊ฐ„๋‹ค.

 

try ์ ˆ์—์„œ ์›๋ž˜ ์‹คํ–‰ํ•˜๊ณ ์ž ํ–ˆ๋˜ ์ฝ”๋“œ๋ฅผ ์ญ‰ ์ฒ˜๋ฆฌํ•ด๋‚˜๊ฐ€๋‹ค๊ฐ€ ์˜ˆ์™ธ๊ฐ€ ๋˜์ ธ์ง€๋ฉด, catch ๋ธ”๋ก์ด ์ด ์˜ˆ์™ธ๋ฅผ ๋ฐ›์•„๋‚ธ๋‹ค.

์ด๋•Œ, catch ์ ˆ์€ try ๋ธ”๋ก์—์„œ ๋˜์งˆ ์˜ˆ์™ธ ๊ฐ์ฒด์™€ ํ˜•์‹์ด ์ผ์น˜ํ•ด์•ผ ํ•œ๋‹ค.

 

catch ์ ˆ์—์„œ ์˜ˆ์™ธ๋ฅผ ๋ฐ›์ง€ ๋ชปํ•˜๋ฉด ์ฒ˜๋ฆฌ๋˜์ง€ ์•Š์€ ์˜ˆ์™ธ๋กœ ๋‚จ๊ฒŒ ๋˜๋ฉฐ, try ์ ˆ์—์„œ ์—ฌ๋Ÿฌ ์ข…๋ฅ˜์˜ ์˜ˆ์™ธ๋ฅผ ๋˜์งˆ ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ๋‹ค๋ฉด catch ์ ˆ ๋ธ”๋ก์„ ์—ฌ๋Ÿฌ ๊ฐœ ๋‘˜ ์ˆ˜๋„ ์žˆ๋‹ค.

class Program
{
    static void Main(string[] args)
    {
        int[] array = { 1, 2, 3 };

        try
        {
            for(int i = 0; i < 5; i++)
            {
                Console.WriteLine(array[i]);
            }                                   
         }
         catch(IndexOutOfRangeException e)
         {
             Console.WriteLine($"์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค : {e.Message}");
         }
        
         Console.WriteLine("ํ”„๋กœ๊ทธ๋žจ ์ •์ƒ ์ข…๋ฃŒ");    // ์˜ˆ์™ธ์ฒ˜๋ฆฌํ•˜์—ฌ ์ด์ œ ์‹คํ–‰๋จ
    }
}

 

์˜ˆ์™ธ ์ฒ˜๋ฆฌ๊ฐ€ ์ž˜ ์ผ์–ด๋‚˜์„œ ์ดํ›„์˜ ์ฝ”๋“œ๊ฐ€ ์ž˜ ์‹คํ–‰๋๋‹ค.

 

 


System.Exception ํด๋ž˜์Šค

 

๋ชจ๋“  ์˜ˆ์™ธ์˜ ์กฐ์ƒ ํด๋ž˜์Šค์ด๋ฉฐ, C#์—์„œ ๋ชจ๋“  ์˜ˆ์™ธ ํด๋ž˜์Šค๋“ค์€ ๋ฐ˜๋“œ์‹œ ์ด ํด๋ž˜์Šค๋กœ๋ถ€ํ„ฐ ์ƒ์†๋ฐ›์•„์•ผ ํ•œ๋‹ค. ์•ž์—์„œ ์‚ฌ์šฉํ–ˆ๋˜ IndexOutOfRangeException ๋˜ํ•œ Exception ํด๋ž˜์Šค๋ฅผ ์ƒ์†๋ฐ›์€ C#์—์„œ ์ œ๊ณตํ•˜๋Š” ์˜ˆ์™ธ ํด๋ž˜์Šค์ด๋‹ค. Exception ํด๋ž˜์Šค๋Š” ๋ชจ๋“  ์˜ˆ์™ธ ํด๋ž˜์Šค๋“ค์˜ ์กฐ์ƒ์ด๊ธฐ ๋•Œ๋ฌธ์—, ๋ชจ๋“  ์˜ˆ์™ธ๋ฅผ ๋‹ค ๋ฐ›์•„๋‚ผ ์ˆ˜ ์žˆ๋‹ค.

try
{
   ...
}
catch(Exception e)     // ๋ชจ๋“  ์˜ˆ์™ธ๋ฅผ ๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค
{
   ...
}

 

๋ชจ๋“  ์˜ˆ์™ธ๋ฅผ ๋ฐ›์•„๋‚ผ ์ˆ˜ ์žˆ์ง€๋งŒ, ์ƒํ™ฉ์— ๋”ฐ๋ผ ์„ฌ์„ธํ•œ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ๊ฐ€ ํ•„์š”ํ•  ๋•Œ๊ฐ€ ์žˆ๋‹ค. ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ์˜ˆ์ƒํ•œ ์˜ˆ์™ธ ๋ง๊ณ ๋„ ๋‹ค๋ฅธ ์˜ˆ์™ธ๋“ค๊นŒ์ง€ ๋ฐ›์•„๋‚ด๊ธฐ ๋•Œ๋ฌธ์— ๋•Œ๋กœ๋Š” ๋ฒ„๊ทธ๋ฅผ ๋ฐœ์ƒํ•˜๋Š” ์ฝ”๋“œ๋กœ ๊ฐ„์ฃผ๋  ์ˆ˜ ์žˆ๋‹ค.

/*  ๊ฐ€๋ น, ๊ทธ ์˜ˆ์™ธ๊ฐ€ ํ˜„์žฌ ์ฝ”๋“œ๊ฐ€ ์•„๋‹Œ ์ƒ์œ„ ์ฝ”๋“œ์—์„œ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•  ์˜ˆ์™ธ๋ผ๋ฉด,,,  */

 

๋”ฐ๋ผ์„œ, ์ฝ”๋“œ๋ฅผ ๋ฉด๋ฐ€ํžˆ ๊ฒ€ํ† ํ•ด ์ฒ˜๋ฆฌํ•˜์ง€ ์•Š์•„์•ผ ํ•  ์˜ˆ์™ธ๊นŒ์ง€ ์ฒ˜๋ฆฌํ•˜์ง€ ์•Š๋„๋ก ์กฐ์‹ฌํ•ด์„œ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค.

 

 

์˜ˆ์™ธ ๋˜์ง€๊ธฐ  :  throw

 

try~catch ๋ฌธ์œผ๋กœ ์˜ˆ์™ธ๋ฅผ ๋ฐ›๋Š”๋‹ค๋Š” ๊ฒƒ์€ ์–ด๋””์„ ๊ฐ€ ์˜ˆ์™ธ๋ฅผ ๋˜์ง„๋‹ค๋Š” ์ด์•ผ๊ธฐ๋‹ค. ์˜ˆ์™ธ๋Š” throw ๋ฌธ์„ ํ†ตํ•ด ๋˜์งˆ ์ˆ˜ ์žˆ๋‹ค.

try
{
    ...
    throw new Exception("์˜ˆ์™ธ ํ† ์Šค!");
}
catch(Exception e)       // throw ๋ฌธ์„ ํ†ตํ•ด ๋˜์ ธ์ง„ ์˜ˆ์™ธ ๊ฐ์ฒด๋Š” catch ๋ฌธ์„ ํ†ตํ•ด ๋ฐ›๋Š”๋‹ค.
{
    Console.WriteLine(e.Message);
}

 

์œ„์™€ ๊ฐ™์ด try~catch ๊ตฌ๋ฌธ ์•ˆ์—์„œ ์˜ˆ์™ธ๋ฅผ ๋˜์ ธ๋„ ๋˜๊ณ , ๋ฉ”์†Œ๋“œ ์•ˆ์—์„œ ์˜ˆ์™ธ๋ฅผ ๋˜์ง€๊ณ  ํ˜ธ์ถœ์ž ์ธก์˜ try~catch ๋ฌธ์—์„œ ๋ฐ›์•„๋‚ผ ์ˆ˜๋„ ์žˆ๋‹ค.

class Program
{
    static void Main(string[] args)
    {
        try
        {
            DoSomething(13);
        }
        catch(Exception e)
        {
            Console.WriteLine(e.Message);
        }
    }

    static void DoSomething(int arg)
    {
        if (arg < 10)
            Console.WriteLine("arg : {0}", arg);
        else
            throw new Exception("arg๊ฐ€ 10๋ณด๋‹ค ํฝ๋‹ˆ๋‹ค.");
    }
}

 

throw๋Š” ๋ณดํ†ต ๋ฌธ(statement)์œผ๋กœ ์‚ฌ์šฉํ•˜์ง€๋งŒ, C# 7.0๋ถ€ํ„ฐ๋Š” ์‹(expression)์œผ๋กœ๋„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ๊ฐœ์„ ๋˜์—ˆ๋‹ค.

int? a = null;
int b = a ?? throw new ArgumentNullException();

// a๋Š” null์ด๋ฏ€๋กœ b์— a๋ฅผ ํ• ๋‹นํ•˜์ง€ ์•Š๊ณ  throw ์‹์ด ์‹คํ–‰๋จ

 

์กฐ๊ฑด ์—ฐ์‚ฐ์ž์—์„œ๋„ ์‹์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

int array = new[] {1, 2, 3};
int index = 4;
int value = array[ index >= 0 && index < 3 ? index : throw new IndexOutOfRangeException()];

 

 

 

๋„ˆ๋Š” ๊ผญ ์‹คํ–‰๋˜๋„๋ก ๋ณด์žฅํ• ๊ฒŒ!  :  finally

 

try ๋ธ”๋ก์—์„œ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๋‹ค๊ฐ€ ์˜ˆ์™ธ๊ฐ€ ๋˜์ ธ์ง€๋ฉด ํ”„๋กœ๊ทธ๋žจ์˜ ์‹คํ–‰์ด catch ์ ˆ๋กœ ๋ฐ”๋กœ ๋›ฐ์–ด ๋„˜์–ด์˜จ๋‹ค. ๋งŒ์•ฝ ์˜ˆ์™ธ ๋•Œ๋ฌธ์— try ๋ธ”๋ก์˜ ์ž์› ํ•ด์ œ ๊ฐ™์€ ์ค‘์š”ํ•œ ์ฝ”๋“œ๋ฅผ ๋ฏธ์ฒ˜ ์‹คํ–‰ํ•˜์ง€ ๋ชปํ•œ๋‹ค๋ฉด ์ด๋Š” ๊ณง ๋ฒ„๊ทธ๋ฅผ ๋งŒ๋“œ๋Š” ์›์ธ์ด ๋œ๋‹ค.

 

๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— try ๋ธ”๋ก ๋ ๋ถ€๋ถ„์— ์ค‘์š”ํ•œ ์ฝ”๋“œ๋“ค์„ ์ ์ง€ ๋ง๊ณ , ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•˜๋”๋ผ๋„ ๋ฐ˜๋“œ์‹œ ์‹คํ–‰ํ•˜๋„๋ก ํ•ด์ฃผ๋Š” finally ๋ธ”๋ก์—๋‹ค ์ž‘์„ฑํ•ด์•ผ ํ•œ๋‹ค. finally ์ ˆ์€ try~catch ๋ฌธ์˜ ์ œ์ผ ๋งˆ์ง€๋ง‰์— ์—ฐ๊ฒฐํ•ด์„œ ์ž‘์„ฑํ•œ๋‹ค.

try
{
    ...
}
catch(Exception e)
{
    ...
}
finally
{
    // ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•˜๋”๋ผ๋„ ๋ฐ˜๋“œ์‹œ ์‹คํ–‰๋œ๋‹ค.
}

 

์ž์‹ ์ด ์†Œ์†๋œ try ์ ˆ์ด ์‹คํ–‰๋œ๋‹ค๋ฉด finally ์ ˆ์€ ์–ด๋–ค ๊ฒฝ์šฐ๋ผ๋„ ์‹คํ–‰๋œ๋‹ค. ์‹ฌ์ง€์–ด, ํ”„๋กœ๊ทธ๋žจ์˜ ์‹คํ–‰ ํ๋ฆ„์ด ๋ณ€๊ฒฝ๋˜๊ฒŒ ํ•˜๋Š” return, throw ๋ฌธ์ด try ๋ธ”๋ก ๋‚ด๋ถ€์— ์žˆ์–ด๋„ finally ๋ธ”๋ก์€ ๋ฐ˜๋“œ์‹œ ์‹คํ–‰๋œ๋‹ค. ๋˜ํ•œ, ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•˜๋˜ ๋ฐœ์ƒํ•˜์ง€ ์•Š๋˜ ๋ฌด์กฐ๊ฑด finally ๋ธ”๋ก์€ ์‹คํ–‰๋œ๋‹ค. ์ด ์ ์„ ๊ธฐ์–ตํ•˜์ž.

 

 

finally ์•ˆ์—์„œ ์˜ˆ์™ธ๊ฐ€ ๋˜ ๋ฐœ์ƒํ•œ๋‹ค๋ฉด?

๊ทธ๋Ÿฌ๋ฉด, finally ๋ธ”๋ก ์•ˆ์—์„œ ๋ฐ›์•„์ฃผ๊ฑฐ๋‚˜ ์ฒ˜๋ฆฌํ•ด์ฃผ๋Š” ์ฝ”๋“œ๊ฐ€ ์—†์œผ๋ฏ€๋กœ ํ•ด๋‹น ์˜ˆ์™ธ๋Š” ์ฒ˜๋ฆฌ๋˜์ง€ ์•Š์€ ์˜ˆ์™ธ๊ฐ€ ๋œ๋‹ค. ์ตœ๋Œ€ํ•œ ์˜ˆ์™ธ๊ฐ€ ์ผ์–ด๋‚˜์ง€ ์•Š๋„๋ก ํ•˜๋˜, ์žฅ๋‹ดํ•  ์ˆ˜ ์—†๋‹ค๋ฉด finally ์•ˆ์—์„œ ๋‹ค์‹œ ํ•œ๋ฒˆ try~catch๋กœ ๋ฌถ์–ด์ฃผ๋Š” ๊ฒƒ๋„ ๋ฐฉ๋ฒ•์ด ๋œ๋‹ค.

 

 


์‚ฌ์šฉ์ž ์ •์˜ ์˜ˆ์™ธ ํด๋ž˜์Šค

 

System.Exception ํด๋ž˜์Šค๋ฅผ ์ƒ์†๋ฐ›์•„์„œ ์‚ฌ์šฉ์ž๊ฐ€ ์›ํ•˜๋Š” ์ƒˆ๋กœ์šด ์˜ˆ์™ธ ํด๋ž˜์Šค๋ฅผ ์ž‘์„ฑํ•ด์ฃผ๋ฉด ๋œ๋‹ค.

class MyException : Exception
{
   public int ErroNo {get; set;}
}

 

๊ทธ๋ฆฌ๊ณ  throw ๋ฌธ์„ ํ†ตํ•ด ์˜ˆ์™ธ๋ฅผ ๋˜์ ธ์ฃผ๋ฉด ๋œ๋‹ค.

try
{
   ...
   throw new MyException();
}
catch(MyException e)
{
    ...
}

 

๋งŒ์•ฝ ์˜ˆ์™ธ๋ฅผ ํ•„ํ„ฐ๋งํ•ด์„œ ๋ฐ›๊ณ  ์‹ถ๋‹ค๋ฉด, when์„ ํ†ตํ•œ ์ถ”๊ฐ€ ์กฐ๊ฑด์„ ์ฃผ๋ฉด ๋œ๋‹ค.

try
{
   ...
}
catch(MyException e) when (e.ErroNo < 0)
{
   ...
}

 

728x90
๋ฐ˜์‘ํ˜•