이번에는 예외 처리 try~catch 문과 함께 쓰는 throw 문과 finally 문에 대해 알아보겠습니다.
(혹시 try~catch 문에 대한 이해가 아직 부족하다면 다음 글을 먼저 읽어보시길 바랍니다!)
https://blog.naver.com/dbswn2414/221858017286
예외 던지기 (throw)
throw는 '던지다'라는 뜻입니다.
try~catch 문은 컴파일러가 예외일 경우를 찾아서 예외 처리를 해준다면,
throw는 프로그래머가 직접 예외를 시켜주고 싶을 때 사용합니다.
다음과 같이 throw 문으로 예외 코드를 실행시킬 수 있습니다.
다음은 throw 문을 사용하여 음수일 경우에 예외를 처리하는 코드의 예제입니다.
using System;
using static System.Console;
namespace Program
{
class Myclass
{
static void NoNegativeNum(int Num)
{
if (Num > 0)
WriteLine($"Number : {Num}");
else
throw new Exception("음수입니다.");
}
static void Main(string[] args)
{
try
{
NoNegativeNum(-2);
}
catch (Exception e)
{
WriteLine(e.Message);
}
}
}
}
)
finally
finally 문을 설명하기 앞서 먼저 예시를 하나 들어 보겠습니다.
예를 들어 다음과 같이 try~catch 문이 있는데 method.Open()을 실행한 후에는 마지막에 반드시 method.Close()를 실행시켜야 합니다.
그런데 코드에 문제가 있어 중간에 예외 처리가 된다면 반드시 실행되어야 됐던 try 문의 method.Close() 가 실행되지 않고 넘어가게 됩니다.
이런 경우의 문제를 해결하기 위해서 "finally 문"이 필요합니다.
finally는 '마지막으로, 최종적으로'라는 뜻입니다.
뜻처럼 try~catch 문에서 finally 문은 앞에서 어떤 일이 있었든 finally 안의 코드는 "무조건" 실행됩니다.
finally 문은 다음과 같이 사용할 수 있습니다.
다음은 두 수를 입력받아 곱셈 메서드 Multiply()에 보내어 값을 반환받는 코드입니다.
그리고 만약 두 수의 형식이 잘못될 경우를 대비하기 위해 try~catch 그리고 finally 문을 사용한 예제입니다.
using System;
using static System.Console;
namespace Program
{
class Myclass
{
static int Multiply(int a, int b)
{
return a*b;
}
static void Main(string[] args)
{
try
{
Write("곱셈을 위한 첫 번째 수를 입력하세요 : ");
String tmp = ReadLine();
int a = int.Parse(tmp);
Write("곱셈을 위한 두 번째 수를 입력하세요 : ");
tmp = ReadLine();
int b = int.Parse(tmp);
WriteLine($"{a} x {b} = {Multiply(a, b)}");
}
catch (FormatException e)
{
WriteLine("에러 : " + e.Message);
}
finally
{
WriteLine("프로그램 종료");
}
}
}
}
[출처] C# 예외 처리 (throw/ finally)|작성자
'개발언어 > C#' 카테고리의 다른 글
[C#] ListView 사용법 (0) | 2021.08.10 |
---|---|
[NAudio] 7. Visualization (0) | 2021.07.08 |
[C#] Exception 예외 처리 (try-catch-finally, throw) (0) | 2021.07.01 |
[C#] 버튼 동적 생성/제거, 클릭이벤트 핸들러 등록 (0) | 2021.04.13 |
[C#] 윈폼 버튼 동적으로 생성하기(Dynamic Button) (0) | 2021.04.13 |