[Unity]/[C#]

[C#] try-catch 예외처리

극꼼 2022. 9. 16. 20:59
반응형


try-catch 예외처리는 프로그램에서 의도치 않은 오류가 발생했을 때 오류를 처리해줍니다.

 

try : 실행하고자 하는 코드

catch : 에러또는 예외가 발생했을 때

finally : 리소스 해제 등의 후처리를 해줍니다. try문이 실행되다가 예외가 발생하면 try문의 나머지 부분을 읽지 않고 바로 catch문으로 넘어가게 됩니다.

 

try
{
    //실행하고자 하는 코드
    Console.WriteLine("try");
}
catch(Exception ex)
{
    Console.WriteLine("catch");
    return ex.Message;
}
finally
{
    Console.WriteLine("finally");
}

 

-> 정상 종료(예외 발생 x) 시 출력 :

try
finally

 

-> 예외가 발생했을 때의 출력 : 

catch
에러 메시지
finally

 


try문에서 throw를 쓰면 사용자가 스스로 예외 상황을 만들 수 있습니다.

try
{
   if(number == 0) throw new Exception("Exception : number = 0");
}

 

* catch(Exception ex)

catch문에 모든 예외를 받아오는 Exception을 사용할 경우 편할 수는 있지만 섬세한 작업은 할 수 없습니다.

예를 들면, 숫자를 0으로 나눴을 때 나오는 예외처리는 DivideByZeroException으로 받아오면 더 섬세한 처리를 할 수 있습니다.

추가적인 예외의 종류는 아래 표에 있습니다.

예외 종류
설명
ArgumentException
메서드에 전달 되는 null이 아닌 인수가 잘못되었다.

ArgumentNullException
메서드에 전달 되는 인수가 null이다.
ArgumentOutOfRangeException
인수가 유효한 값 범위를 벗어났다.
DirectoryNotFoundException
디렉터리 경로 일부가 잘못되었다.
DivideByZeroException
0으로 나누었다.
DriveNotFoundException
드라이브가 없거나 사용할 수 없다.
Exception
모든 종류의 예외를 처리할 수 있다.
FileNotFoundException
파일이 없다.
FormatException
문자열에서 변환할 수 있는 적절 한 형식이 아니다.
IndexOutOfRangeException
인덱스가 배열 또는 컬렉션의 범위를 벗어났다.
InvalidOperationException
개체의 현재 상태에서 메서드 호출을 사용할 수 없다.
KeyNotFoundException
컬렉션의 멤버에 액세스 하는 데 지정 된 키를 찾을 수 없다.
NotImplementedException
메서드 또는 작업이 구현 되지 않았다.
NotSupportedException
메서드 또는 작업이 지원 되지 않는다.
ObjectDisposedException
삭제 된 개체에 대한 작업을 수행했다.
OverflowException
산술, 캐스팅 또는 변환 작업을 수행 하면 오버플로가 발생한다.
OverflowException
작업 결과가 대상 데이터 형식의 범위를 벗어났다.
PathTooLongException
경로 또는 파일 이름이 시스템에서 정의한 최대 길이를 초과한다.
PlatformNotSupportedException
현재 플랫폼에서 작업이 지원 되지 않는다.
RankException
차원 수가 잘못되었다.
TimeoutException
작업에 할당 된 시간 간격이 만료 되었다.
UriFormatException
잘못 된 URI (Uniform Resource Identifier)가 사용 되었다.

출처 : https://blog.naver.com/PostView.naver?blogId=jwcwjung&logNo=222388017000&categoryNo=7&parentCategoryNo=0&viewDate=&currentPage=1&postListTopCurrentPage=1&from=search

 

반응형