◆ 런타임 에러와 예외 처리
프로그램 작성시에는 2가지 에러에 대비해야 합니다. 코드 작성시에 발견되는 컴파일에러와 프로그램이 실행될 때 나타나는 런타임에러 입니다. 컴파일 에러가 있으면 컴파일이 안되기 때문에 바로 발견해서 해결할 수 있어서 큰 문제가 없습니다. 문제는 런타임에러에 대한 처리인데 프로그램이 실행되어 일어날수 있는 모든 경우를 만들어 테스트를 해야 런타임에러를 해결할 수 있기 때문에 100% 해결하는 것은 불가능합니다. 런타임 에러는 보통 변수를 잘못 사용해서 발생하는데 이것을 막을 수 있는 게 ‘예외처리’라는 것입니다.
◆ 런타임 에러 발생
가장 많이 발생하는 런타임에러는 0으로 나눌 때 발생(Divided by Zero)하는 에러이다. 즉 어떠한 값을 0으로 나누었을 때 발생하는 에러이다.
int A = 10/B; // B 가 0이 될 경우 런타임에러가 발생한다.
C# .NET 에서 실제 코드를 적용해 보겠습니다.
private void button1_Click(object sender, EventArgs e)
{
int B = 0;
int A = 10 / B; // B 가0이될경우런타임에러가발생한다.
}
Button1 을 클릭하게 되면 아래와 같은 런타임 에러가 발생합니다.
◆ 런타임 에러 처리
위와 같은 경우 if 문을 써서 아래처럼 처리할 수도 있습니다.
int B = 0;
if(B ==0)
{
// B가0이라서무시하던지에러발생하던지다른조치를취한다.
}
else
{
int A = 10 / B;
}
하지만 이것은 0으로 나눌 때 발생하는 에러만 처리하는 것이고 다른 에러에 대한 처리는 별도로 해줘야 합니다.
생각지도 못한 에러까지 처리하려면 아래처럼 try catch 를 사용하면 됩니다.
int B = 0;
try
{
int A = 10 / B; // B 가0이될경우런타임에러가발생한다.
}
catch (System.Exception ex)
{
MessageBox.Show(ex.Message,”예외발생”);
// 0으로나누는런타임에러를포함해서모든에러를대비할수있다.
}
이제 어떠한 에러가 발생하더라도 런타임에러로 프로그램이 종료 되는 일은 없을 것입니다.