namespace ExceptionTest
{
class Program
{
static void Func1()
{
Console.WriteLine("Func1");
string str = null;
str.ToString();
}
static void Func2()
{
Func1();
Console.WriteLine("Func2");
}
static void Func3()
{
Func2();
Console.WriteLine("Func2");
}
static void Func4()
{
Func3();
Console.WriteLine("Func4");
}
static void Main(string[] args)
{
try
{
Func4();
}
catch (Exception ex)
{
Console.WriteLine("catch (Exception ex)");
Console.WriteLine(ex.ToString());
System.Threading.Thread.Sleep(5000);
Environment.Exit(-1);
}
}
}
}
위와 같은 테스트 코드인데 Func1()함수에서 예외 발생한 것은 미처리된 예외로 처리되어 비정상 종료되는 것으로 이해하고 있었는데
Func2() -> Func3() -> Func4() -> Main() 이와 같이 상위 함수로 계속 타고 올라가서 Main()함수의 try ~ catch 처리기에서
예외처리가 되네요.
그렇다면 콘솔프로그램같은 경우 별도의 쓰레드를 생성하지 않는다면 그냥 Main 함수 에서 try ~ catch 처리하면
Main()함수내의 모든 코드에서 발생되는 예외(단 모든 코드에는 try ~ catch 처리기가 없음)는 Main 함수의 try ~ catch에서 처리되는 건가요?
미리 감사드립니다.
수고하세요.
[최초 등록일: ]
[최종 수정일: 3/23/2022]