Exception Filter
: catch์ ์ด ๋ฐ์๋ค์ผ ์์ธ ๊ฐ์ฒด์ ์ ์ฝ์ฌํญ์ ์ฃผ๊ณ ๊ทธ ์ฌํญ์ ๋ง์กฑํ๋ ๊ฒฝ์ฐ์
์์ธ ์ฒ๋ฆฌ๋ฅผ ์คํํ ์ ์๋๋ก ํ๋ ๊ธฐ๋ฅ
catch๋ฌธ ๋ค์ when ํค์๋๋ฅผ ์ด์ฉ.
์ฌ์ฉ์ ์ ์ ์์ธ ํด๋์ค
- ๋ชจ๋ ์์ธ ๊ฐ์ฒด๋ System.Exception ํด๋์ค๋ก๋ถํฐ ํ์๋๋ค.
- ์ฌ์ฉ์ ์ ์ ์์ธ ํด๋์ค๋ฅผ ๋ง๋ค๋๋ ์ญ์ System.Exception ํด๋์ค๋ฅผ ์์๋ฐ์์ ๋ง๋ ๋ค.
์ฌ์ฉ ์์ ์ฝ๋
using System.Collections;
namespace ExceptionEx
{
// ์ฌ์ฉ์ ์ ์ ์์ธ ํด๋์ค
class UserException : Exception
{
public int ErrorCode { get; set; }
}
class Program
{
static void Main(string[] args)
{
try {
Console.WriteLine("1 ~ 5์ ์ซ์ ์ค ํ๋๋ฅผ ์
๋ ฅํ์์ค : ");
string numTxt = Console.ReadLine();
int num = Int32.Parse(numTxt);
if (num < 0 || num > 5)
{
throw new UserException() { ErrorCode = num };
}
else
{
Console.WriteLine($"{num}");
}
}
catch (UserException e) when (e.ErrorCode < 0)
{
Console.WriteLine("์์๋ ์
๋ ฅ๋์ง ์์ต๋๋ค.");
}
catch (UserException e) when (e.ErrorCode > 5)
{
Console.WriteLine("5๋ณด๋ค ํฐ ์๋ ์ฌ์ฉํ ์ ์์ต๋๋ค.");
}
}
}
}
Output
1 ~ 5์ ์ซ์ ์ค ํ๋๋ฅผ ์
๋ ฅํ์์ค :
-1
์์๋ ์
๋ ฅ๋์ง ์์ต๋๋ค.
1 ~ 5์ ์ซ์ ์ค ํ๋๋ฅผ ์
๋ ฅํ์์ค :
6
5๋ณด๋ค ํฐ ์๋ ์ฌ์ฉํ ์ ์์ต๋๋ค.
1 ~ 5์ ์ซ์ ์ค ํ๋๋ฅผ ์
๋ ฅํ์์ค :
3
3