240130-TIL

2024. 1. 30. 21:01내일배움캠프

1월 30일

 

나는 현재 팀 프로젝트를 진행중이고 팀원들의 뛰어난 코딩 실력 덕에 하루가 다르게

 

성장해 나가는 중이다. 다른 사람의 코드를 보고 모르는 기능이 있다면 어떻게 동작하는지

 

어떻게 사용하는지 질문하면서 몰랐던 기능들에 대해서 배우고있다.

 

오늘은 그렇게 배운 Try - Catch 문에 대해서 정리해 보도록 하자

 

Try - Catch

더보기

Try - Catch문에 앞서

 

예외처리에 대한 이야기를 하겠다.

 

예외처리는 프로그램이 작성한 사람의 의도와는 다르게 실행되어 오류가 발생할때,

 

오류가 생기면 해결을 해주는 기능을 말한다.

 

사실 자주보는 에러는 다음과 같다 n의 수를 0으로 나누려 한다던가?

 

배열의 인덱스 범위를 초과해서 작업을 하려고 한다던가

 

예시 코드를 보자 a를 b로 나누는 코드이다

 

코드를 돌려보면

 

 

예외가 처리되지 않았다는 메시지와 함께 에러 메세지를 툭 하고 던져주게 된다

 

0으로 나눴을때 정보를 DivideByZeroException객체에 담고 Main() 메소드에게 던져주는데 Main()메소드는

 

예외를 처리할 방법을 가지고 있지 않아 다시 돌려주게 된다 그러면 프로그램이 종료된다.

 

이때 에러를 Main() 메소드가 받아 처리하는 부분이 있으면 프로그램은 종료하지 않게 되고,

 

그러한 기능을 만들어주는 것이 바로 '예외 처리' 라고 부른다.

 

try - catch 문은 아주 손쉽게 예외 처리를 하게 해준다

 

예시 코드를 보자

 

try
{
    //실행코드
}
catch(예외 객체1)
{
    //예외1 발생했을때 코드
}
catch(예외 객체2)
{
    //예외2 발생했을때 코드
}
finally
{
    //무조건 실행되는 코드
}

 

try - catch문은 이런식으로 작성하면 된다.

 

그렇다면 0으로 나눴을때를 try - catch문을 통해 예외 처리를 해보자

 

try 부분은 똑같이 a에는 100 b에는 0을 넣고 나누어준다.

 

Catch 부분은 어떤 에러가 발생했을때 Catch { } 안의 내용을 실행시켜줄지 적어주면 된다.

 

나는 0으로 나눌때의 예외를 처리하고 싶기 때문에 DivideByZeroException을 적어주었다.

 

해당 내용을 실행시키면 Try에 있던 부분을 실행시키면서 내려가다

 

0으로 나눠지는 부분을 만나게 되어 해당 오류를 만나게 되면 처리해줄 예외 처리 Catch { }

 

안의 내용을 실행시킨 결과이다.

 

 

추가로! 해당 Try - Catch문을 공부하면서 더 알게된 부분이 있다

 

 Exception 클래스

더보기

 Exception 클래스는 모든 예외의 조상 즉 부모 클래스이다.

 DivideByZeroException을 정의 탐색을 통해 타고 올라가보자

 

DivideByZeroException 클래스는 ArithmeticException 클래스를 상속받고 있다.

 

해당 클래스를 마이크로소프트 홈페이지에서는

산술 캐스팅 또는 변환 작업의 오류로 인해 발생하는 예외라고 설명해주며

 

이런 순서대로 상속받고 있다고 설명해주고 있다. 외국 지렁이가 보기 싫으니 번역을 해보자

 

 

실제로 ArithmeticException 정의탐색해서 올라가면  SystemException이

 

SystemException을 타고 올라가면 Exception이 존재하고 있다.

 

그래서 Catch문에 (Exception arr)을 하면 모든 예외를 처리할 수 있게 된다.

 

 

이처럼 만능처럼 보이는 Exception이라도 단점은 존재하는데 

 

발생한 에러를 섬세하게 처리해야할 경우라면 문제가 생길 수도 있고

 

굳이 처리하지 않아도 될 에러마저 예외처리하기 때문에 원하는 결과를 얻을 수 없을지도 모르게 된다.

오늘은 예외를 처리하는 방법 try - catch문에 대해서 알아보았다.

 

0으로 나누는 문제 그리고 배열의 인덱스 문제 같은 경우는 정말 기본적인 실수지만서도

 

꽤나 많이 만나보게 되는 오류 목록이다. 내가 작업했던 내용이 살짝 불안하고 그 내용때문에

 

프로그램이 동작중 뻗을 위험성이 있다면 try - catch문을 적절히 활용해 예외를 처리해보자

 

1월 30일 TIL은 여기서 마치도록 하겠다.

'내일배움캠프' 카테고리의 다른 글

240201-TIL  (0) 2024.02.01
240131-TIL  (0) 2024.01.31
240129-TIL  (0) 2024.01.29
240126-TIL  (0) 2024.01.26
240125-TIL  (0) 2024.01.25