Spec-Zone.ru › Haskell 8

GHC.Exception.Type

Авторские права (c) Университет Глазго 1998-2002
Лицензия см. libraries/base/LICENSE
Поддержка cvs-ghc@haskell.org
Устойчивость внутренняя
Переносимость непереносимая (расширения GHC)
Безопасный Haskell Достоверный
Язык Haskell2010

Описание

Исключения и функции обработки исключений.

class (Typeable e, Show e) => Exception e where Исходный код

Любой тип, который вы хотите бросить или перехватить как исключение, должен быть экземпляром класса Exception. Простейший случай — это новый тип исключения непосредственно под корнем:

data MyException = ThisException | ThatException
    deriving Show

instance Exception MyException

Определения методов по умолчанию в классе Exception делают то, что нам нужно в этом случае. Теперь вы можете бросить и перехватить ThisException и ThatException как исключения:

*Main> throw ThisException `catch` \e -> putStrLn ("Caught " ++ show (e :: MyException))
Caught ThisException

В более сложных примерах вы можете захотеть определить целую иерархию исключений:

---------------------------------------------------------------------
-- Make the root exception type for all the exceptions in a compiler

data SomeCompilerException = forall e . Exception e => SomeCompilerException e

instance Show SomeCompilerException where
    show (SomeCompilerException e) = show e

instance Exception SomeCompilerException

compilerExceptionToException :: Exception e => e -> SomeException
compilerExceptionToException = toException . SomeCompilerException

compilerExceptionFromException :: Exception e => SomeException -> Maybe e
compilerExceptionFromException x = do
    SomeCompilerException a <- fromException x
    cast a

---------------------------------------------------------------------
-- Make a subhierarchy for exceptions in the frontend of the compiler

data SomeFrontendException = forall e . Exception e => SomeFrontendException e

instance Show SomeFrontendException where
    show (SomeFrontendException e) = show e

instance Exception SomeFrontendException where
    toException = compilerExceptionToException
    fromException = compilerExceptionFromException

frontendExceptionToException :: Exception e => e -> SomeException
frontendExceptionToException = toException . SomeFrontendException

frontendExceptionFromException :: Exception e => SomeException -> Maybe e
frontendExceptionFromException x = do
    SomeFrontendException a <- fromException x
    cast a

---------------------------------------------------------------------
-- Make an exception type for a particular frontend compiler exception

data MismatchedParentheses = MismatchedParentheses
    deriving Show

instance Exception MismatchedParentheses where
    toException   = frontendExceptionToException
    fromException = frontendExceptionFromException

Теперь мы можем перехватить исключение MismatchedParentheses как MismatchedParentheses, SomeFrontendException или SomeCompilerException, но не другие типы, например IOException:

*Main> throw MismatchedParentheses `catch` \e -> putStrLn ("Caught " ++ show (e :: MismatchedParentheses))
Caught MismatchedParentheses
*Main> throw MismatchedParentheses `catch` \e -> putStrLn ("Caught " ++ show (e :: SomeFrontendException))
Caught MismatchedParentheses
*Main> throw MismatchedParentheses `catch` \e -> putStrLn ("Caught " ++ show (e :: SomeCompilerException))
Caught MismatchedParentheses
*Main> throw MismatchedParentheses `catch` \e -> putStrLn ("Caught " ++ show (e :: IOException))
*** Exception: MismatchedParentheses

Минимальное полное определение

Nothing

Методы

toException :: e -> SomeException Исходный код

fromException :: SomeException -> Maybe e Исходный код

displayException :: e -> String Исходный код

Отобразить значение этого исключения в удобном для человека виде.

Реализация по умолчанию: show.

С версии: base-4.8.0.0

Экземпляры
Подробности об экземплярах
Exception SomeException

С версии: base-3.0

Подробности об экземпляре

Определено в GHC.Exception.Type

Методы

toException :: SomeException -> SomeException Исходный код

fromException :: SomeException -> Maybe SomeException Исходный код

displayException :: SomeException -> String Исходный код

Exception ArithException

С версии: base-4.0.0.0

Подробности об экземпляре

Определено в GHC.Exception.Type

Методы

toException :: ArithException -> SomeException Исходный код

fromException :: SomeException -> Maybe ArithException Исходный код

displayException :: ArithException -> String Исходный код

Exception ErrorCall

С версии: base-4.0.0.0

Подробности об экземпляре

Определено в GHC.Exception

Методы

toException :: ErrorCall -> SomeException Исходный код

fromException :: SomeException -> Maybe ErrorCall Исходный код

displayException :: ErrorCall -> String Исходный код

Exception FileLockingNotSupported
Подробности об экземпляре

Определено в GHC.IO.Handle.Lock.Common

Методы

toException :: FileLockingNotSupported -> SomeException Исходный код

fromException :: SomeException -> Maybe FileLockingNotSupported Исходный код

displayException :: FileLockingNotSupported -> String Исходный код

Exception IOException

С версии: base-4.1.0.0

Подробности об экземпляре

Определено в GHC.IO.Exception

Методы

toException :: IOException -> SomeException Исходный код

fromException :: SomeException -> Maybe IOException Исходный код

displayException :: IOException -> String Исходный код

Exception ExitCode

С версии: base-4.1.0.0

Подробности об экземпляре

Определено в GHC.IO.Exception

Методы

toException :: ExitCode -> SomeException Исходный код

fromException :: SomeException -> Maybe ExitCode Исходный код

displayException :: ExitCode -> String Исходный код

Exception FixIOException

Since: base-4.11.0.0

Instance details

Defined in GHC.IO.Exception

Methods

toException :: FixIOException -> SomeException Source

fromException :: SomeException -> Maybe FixIOException Source

displayException :: FixIOException -> String Source

Exception ArrayException

Since: base-4.1.0.0

Instance details

Defined in GHC.IO.Exception

Methods

toException :: ArrayException -> SomeException Source

fromException :: SomeException -> Maybe ArrayException Source

displayException :: ArrayException -> String Source

Exception AsyncException

Since: base-4.7.0.0

Instance details

Defined in GHC.IO.Exception

Methods

toException :: AsyncException -> SomeException Source

fromException :: SomeException -> Maybe AsyncException Source

displayException :: AsyncException -> String Source

Exception SomeAsyncException

Since: base-4.7.0.0

Instance details

Defined in GHC.IO.Exception

Methods

toException :: SomeAsyncException -> SomeException Source

fromException :: SomeException -> Maybe SomeAsyncException Source

displayException :: SomeAsyncException -> String Source

Exception AssertionFailed

Since: base-4.1.0.0

Instance details

Defined in GHC.IO.Exception

Methods

toException :: AssertionFailed -> SomeException Source

fromException :: SomeException -> Maybe AssertionFailed Source

displayException :: AssertionFailed -> String Source

Exception CompactionFailed

Since: base-4.10.0.0

Информация об экземпляре

Определено в GHC.IO.Exception

Краткое описание методов

toException :: CompactionFailed -> SomeException Источник

fromException :: SomeException -> Maybe CompactionFailed Источник

displayException :: CompactionFailed -> String Источник

Exception AllocationLimitExceeded

С версии: base-4.8.0.0

Информация об экземпляре

Определено в GHC.IO.Exception

Краткое описание методов

toException :: AllocationLimitExceeded -> SomeException Источник

fromException :: SomeException -> Maybe AllocationLimitExceeded Источник

displayException :: AllocationLimitExceeded -> String Источник

Exception Deadlock

С версии: base-4.1.0.0

Информация об экземпляре

Определено в GHC.IO.Exception

Краткое описание методов

toException :: Deadlock -> SomeException Источник

fromException :: SomeException -> Maybe Deadlock Источник

displayException :: Deadlock -> String Источник

Exception BlockedIndefinitelyOnSTM

С версии: base-4.1.0.0

Информация об экземпляре

Определено в GHC.IO.Exception

Краткое описание методов

toException :: BlockedIndefinitelyOnSTM -> SomeException Источник

fromException :: SomeException -> Maybe BlockedIndefinitelyOnSTM Источник

displayException :: BlockedIndefinitelyOnSTM -> String Источник

Exception BlockedIndefinitelyOnMVar

С версии: base-4.1.0.0

Информация об экземпляре

Определено в GHC.IO.Exception

Краткое описание методов

toException :: BlockedIndefinitelyOnMVar -> SomeException Источник

fromException :: SomeException -> Maybe BlockedIndefinitelyOnMVar Источник

displayException :: BlockedIndefinitelyOnMVar -> String Источник

Exception Dynamic

С версии: base-4.0.0.0

Подробности экземпляра

Определено в Data.Dynamic

Методы

toException :: Dynamic -> SomeException Исходный код

fromException :: SomeException -> Может быть Dynamic Исходный код

displayException :: Dynamic -> Строка Исходный код

Исключение NestedAtomically

С момента: base-4.0

Подробности экземпляра

Определено в Control.Exception.Base

Методы

toException :: NestedAtomically -> SomeException Исходный код

fromException :: SomeException -> Может быть NestedAtomically Исходный код

displayException :: NestedAtomically -> Строка Исходный код

Исключение NonTermination

С момента: base-4.0

Подробности экземпляра

Определено в Control.Exception.Base

Методы

toException :: NonTermination -> SomeException Исходный код

fromException :: SomeException -> Может быть NonTermination Исходный код

displayException :: NonTermination -> Строка Исходный код

Исключение TypeError

С момента: base-4.9.0.0

Подробности экземпляра

Определено в Control.Exception.Base

Методы

toException :: TypeError -> SomeException Исходный код

fromException :: SomeException -> Может быть TypeError Исходный код

displayException :: TypeError -> Строка Исходный код

Исключение NoMethodError

С момента: base-4.0

Подробности экземпляра

Определено в Control.Exception.Base

Методы

toException :: NoMethodError -> SomeException Исходный код

fromException :: SomeException -> Может быть NoMethodError Исходный код

displayException :: NoMethodError -> Строка Исходный код

Исключение RecUpdError

С момента: base-4.0

Подробности экземпляра

Определено в Control.Exception.Base

Методы

toException :: RecUpdError -> SomeException Источник

fromException :: SomeException -> Возможно RecUpdError Источник

displayException :: RecUpdError -> Строка Источник

Исключение RecConError

С момента: base-4.0

Подробности экземпляра

Определено в Control.Exception.Base

Методы

toException :: RecConError -> SomeException Источник

fromException :: SomeException -> Возможно RecConError Источник

displayException :: RecConError -> Строка Источник

Исключение RecSelError

С момента: base-4.0

Подробности экземпляра

Определено в Control.Exception.Base

Методы

toException :: RecSelError -> SomeException Источник

fromException :: SomeException -> Возможно RecSelError Источник

displayException :: RecSelError -> Строка Источник

Исключение PatternMatchFail

С момента: base-4.0

Подробности экземпляра

Определено в Control.Exception.Base

Методы

toException :: PatternMatchFail -> SomeException Источник

fromException :: SomeException -> Возможно PatternMatchFail Источник

displayException :: PatternMatchFail -> Строка Источник

Исключение Timeout

С момента: base-4.7.0.0

Подробности экземпляра

Определено в System.Timeout

Методы

toException :: Timeout -> SomeException Источник

fromException :: SomeException -> Возможно Timeout Источник

displayException :: Timeout -> Строка Источник

Исключение Void

С момента: base-4.8.0.0

Подробности экземпляра

Определено в Data.Void

Методы

toException :: Void -> SomeException Исходный код

fromException :: SomeException -> Maybe Void Исходный код

displayException :: Void -> String Исходный код

data SomeException Исходный код

Тип SomeException — корень иерархии типов исключений. При возникновении исключения типа e, оно инкапсулируется в SomeException.

Конструкторы

forall e.Exception e => SomeException e
Экземпляры
Подробности экземпляров
Show SomeException

С момента: base-3.0

Подробности экземпляра

Определено в GHC.Exception.Type

Методы

showsPrec :: Int -> SomeException -> ShowS Исходный код

show :: SomeException -> String Исходный код

showList :: [SomeException] -> ShowS Исходный код

Exception SomeException

С момента: base-3.0

Подробности экземпляра

Определено в GHC.Exception.Type

Методы

toException :: SomeException -> SomeException Исходный код

fromException :: SomeException -> Maybe SomeException Исходный код

displayException :: SomeException -> String Исходный код

data ArithException Исходный код

Исключения арифметических операций.

Конструкторы

Overflow
Underflow
LossOfPrecision
DivideByZero
Denormal
RatioZeroDenominator

С момента: base-4.6.0.0

Примеры реализации
Подробности примеров
Eq ArithException

С момента: base-3.0

Подробности реализации

Определено в GHC.Exception.Type

Методы

(==) :: ArithException -> ArithException -> Bool Исходный код

(/=) :: ArithException -> ArithException -> Bool Исходный код

Ord ArithException

С момента: base-3.0

Подробности реализации

Определено в GHC.Exception.Type

Методы

compare :: ArithException -> ArithException -> Ordering Исходный код

(<) :: ArithException -> ArithException -> Bool Исходный код

(<=) :: ArithException -> ArithException -> Bool Исходный код

(>) :: ArithException -> ArithException -> Bool Исходный код

(>=) :: ArithException -> ArithException -> Bool Исходный код

max :: ArithException -> ArithException -> ArithException Исходный код

min :: ArithException -> ArithException -> ArithException Исходный код

Show ArithException

С момента: base-4.0.0.0

Подробности реализации

Определено в GHC.Exception.Type

Методы

showsPrec :: Int -> ArithException -> ShowS Исходный код

show :: ArithException -> String Исходный код

showList :: [ArithException] -> ShowS Исходный код

Исключение ArithException

С момента: base-4.0.0.0

Подробности реализации

Определено в GHC.Exception.Type

Методы

toException :: ArithException -> SomeException Исходный код

fromException :: SomeException -> Maybe ArithException Исходный код

displayException :: ArithException -> String Исходный код

divZeroException :: SomeException Исходный код

overflowException :: SomeException Исходный код

ratioZeroDenomException :: SomeException Исходный код

underflowException :: SomeException Исходный код

© The University of Glasgow and others
Licensed under a BSD-style license (see top of the page).
https://downloads.haskell.org/~ghc/8.10.2/docs/html/libraries/base-4.14.1.0/GHC-Exception-Type.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API