F # исключение и свойство внутреннего исключения - PullRequest
5 голосов
/ 29 ноября 2011

в F # я могу объявить пользовательское исключение следующим образом: exception Foo of string,

, которое сопоставит строку со свойством Message.

как мне объявить тот, который я могу позже использовать, чтобы вызвать перехваченное исключение как внутреннее исключение этого?Другими словами, как мне сделать что-то вроде (псевдо)

try 
   ... 
with e -> raise Foo (message, innerException) where innerException is e?

Спасибо!

1 Ответ

9 голосов
/ 29 ноября 2011

Простое объявление исключений с использованием exception ограничено во многих отношениях.Если вы хотите использовать другие функции стандартных исключений .NET (например, внутреннее исключение), вы можете объявить исключение как класс:

open System

type FooException(message:string, innerException:Exception) =
   inherit Exception(message, innerException)

Вы также можете предоставить перегруженные конструкторы, например, если хотите использоватьnull как значение по умолчанию для InnerException.Исключение можно вызвать как обычное исключение .NET, используя raise:

raise (new FooException(message, e))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...