프로그래밍/의문

C# Excel Application이 예외 발생 시 종료되지 않는 현상

제페 2019. 3. 31. 17:05
반응형

예외를 잡아주지 않으면 Excel이 꺼지지 않고 계속 떠있다.

다음은 예외를 의도적으로 발생시키고 그것을 finally로 종료한 코드이다.

using System;
using Excel = Microsoft.Office.Interop.Excel;

class Program
{
    static void Main(string[] args)
    {
        Excel.Application app = new Excel.Application();
        try
        {
            app.DisplayAlerts = false;
            throw new ArgumentException("exception");
        }
        finally
        {
            app.Workbooks.Close();
            app.Quit();
        }
    }
}

프로세스 상태

꺼지지 않은 Excel Process

finally 내부 코드가 실행되었는데도 백그라운드 프로세스에 Excel이 계속 떠있다.

 

다음은 Excel Application이 꺼지지 않는 문제를 수정한 코드이다.

이전 코드에서 catch문만 추가했다.

using System;
using Excel = Microsoft.Office.Interop.Excel;

class Program
{
    static void Main(string[] args)
    {
        Excel.Application app = new Excel.Application();
        try
        {
            app.DisplayAlerts = false;
            throw new ArgumentException("exception");
        }
        catch(Exception)
        {
        }
        finally
        {
            app.Workbooks.Close();
            app.Quit();
        }
    }
}

프로세스 상태

없어진 Excel Process

 

결론: Catch하자

반응형