예외 형식
예외 형식 (Exception Types)
F#에는 두 가지 종류의 예외가 있어요. 하나는 .NET 예외 형식이고, 다른 하나는 F# 예외 형식이에요. 이 글에서는 F# 예외 형식을 어떻게 정의하고 사용하는지 설명할게요.
본문
구문 (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을 상속하는 새로운 형식이 돼요.