예외 형식

예외 형식 (Exception Types)

F#에는 두 가지 종류의 예외가 있어요. 하나는 .NET 예외 형식이고, 다른 하나는 F# 예외 형식이에요. 이 글에서는 F# 예외 형식을 어떻게 정의하고 사용하는지 설명할게요.

출처: https://learn.microsoft.com/en-us/dotnet/fsharp/language-reference/exception-handling/exception-types

본문

구문 (Syntax)

exception exception-type of argument-type

설명 (Remarks)

위 구문에서 exception-type은 새로 만들 F# 예외 형식의 이름이고, argument-type은 이 예외를 발생시킬 때 함께 넘겨줄 수 있는 인자의 형식을 뜻해요. 인자가 여러 개 필요하다면 argument-type에 튜플 형식을 지정해서 여러 인자를 넘길 수 있어요.

F# 예외 형식의 전형적인 정의는 다음과 같아요.

exception MyError of string

이 예외 형식을 발생시키려면 raise 함수를 다음과 같이 사용하면 돼요.

raise (MyError("Error message"))

F# 예외 형식은 try...with 식의 필터 안에서 직접 사용할 수 있어요. 다음 예를 볼게요.

exception Error1 of string
// Using a tuple type as the argument type.
exception Error2 of string * int

let function1 x y =
   try
      if x = y then raise (Error1("x"))
      else raise (Error2("x", 10))
   with
      | Error1(str) -> printfn "Error1 %s" str
      | Error2(str, i) -> printfn "Error2 %s %d" str i

function1 10 10
function1 9 2

F#에서 exception 키워드로 정의한 예외 형식은 System.Exception을 상속하는 새로운 형식이 돼요.

더 알아보기 (Learn more)