Spec-Zone.ru › Haskell 8

GHC.Exception

Copyright (c) The University of Glasgow 1998-2002
License see libraries/base/LICENSE
Maintainer cvs-ghc@haskell.org
Stability internal
Portability non-portable (GHC extensions)
Safe Haskell Trustworthy
Language Haskell2010

Описание

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

module GHC.Exception.Type

throw :: forall (r :: RuntimeRep). forall (a :: TYPE r). forall e. Exception e => e -> a Source

Выбросить исключение. Исключения могут быть выброшены из чисто функционального кода, но могут быть перехвачены только внутри IO монады.

data ErrorCall Source

Это исключение возникает, когда пользователь вызывает error. Первый String — это аргумент, переданный в error, второй String — это местоположение.

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

ErrorCallWithLocation String String

Объединенные паттерны

pattern ErrorCall :: String -> ErrorCall
Экземпляры
Подробности о экземплярах
Eq ErrorCall

Since: base-4.7.0.0

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

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

Методы

(==) :: ErrorCall -> ErrorCall -> Bool Source

(/=) :: ErrorCall -> ErrorCall -> Bool Source

Ord ErrorCall

Since: base-4.7.0.0

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

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

Методы

compare :: ErrorCall -> ErrorCall -> Ordering Source

(<) :: ErrorCall -> ErrorCall -> Bool Source

(<=) :: ErrorCall -> ErrorCall -> Bool Source

(>) :: ErrorCall -> ErrorCall -> Bool Source

(>=) :: ErrorCall -> ErrorCall -> Bool Source

max :: ErrorCall -> ErrorCall -> ErrorCall Source

min :: ErrorCall -> ErrorCall -> ErrorCall Source

Show ErrorCall

Since: base-4.0.0.0

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

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

Методы

showsPrec :: Int -> ErrorCall -> ShowS Source

show :: ErrorCall -> String Source

showList :: [ErrorCall] -> ShowS Source

Exception ErrorCall

Since: base-4.0.0.0

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

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

Методы

toException :: ErrorCall -> SomeException Source

fromException :: SomeException -> Maybe ErrorCall Source

displayException :: ErrorCall -> String Source

errorCallException :: String -> SomeException Source

errorCallWithCallStackException :: Строка -> CallStack -> SomeException Исходный код

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

CallStack представляют собой лёгкий способ получения частичного стека вызовов в любой точке программы.

Функция может запросить своё место вызова с помощью HasCallStack ограничения. Например, мы можем определить

putStrLnWithCallStack :: HasCallStack => String -> IO ()

как вариант putStrLn, который получит своё место вызова и выведет его, вместе со строкой, переданной в качестве аргумента. Мы можем получить доступ к стеку вызовов внутри putStrLnWithCallStack с помощью callStack.

putStrLnWithCallStack :: HasCallStack => String -> IO ()
putStrLnWithCallStack msg = do
  putStrLn msg
  putStrLn (prettyCallStack callStack)

Таким образом, если мы вызовем putStrLnWithCallStack, мы получим отформатированный стек вызовов вместе с нашей строкой.

>>> putStrLnWithCallStack "hello"
hello
CallStack (from HasCallStack):
  putStrLnWithCallStack, called at <interactive>:2:1 in interactive:Ghci1

GHC решает HasCallStack ограничения в три этапа:

  1. Если в области видимости есть CallStack — т.е. у функции-обертки есть HasCallStack ограничение — GHC добавит новое место вызова к существующему CallStack.
  2. Если в области видимости нет CallStack — например, в сессии GHCi выше — и у определения-обертки нет явного типа подписи, GHC выведет HasCallStack ограничение для определения-обертки (с учётом ограничения мономорфизма).
  3. Если в области видимости нет CallStack и у определения-обертки есть явная подпись типа, GHC решит HasCallStack ограничение для одиночного CallStack, содержащего только текущее место вызова.

CallStack не взаимодействуют с RTS и не требуют компиляции с -prof. С другой стороны, поскольку они построены явно через HasCallStack ограничения, они, как правило, не содержат столько же информации, сколько симулируемые стеки вызовов, поддерживаемые RTS.

CallStack — это [(String, SrcLoc)] . String — это имя функции, которая была вызвана, SrcLoc — место вызова. Список отсортирован по тому, какая функция была вызвана последней.

ПРИМЕЧАНИЕ: внимательный пользователь может заметить, что HasCallStack — это просто псевдоним для неявного параметра ?callStack :: CallStack. Это деталь реализации, и не следует считать её частью CallStack API; мы можем изменить реализацию в будущем.

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

Примеры использования
Подробности примеров
IsList CallStack

Обратите внимание, что 'fromList . toList = id' только для размороженных CallStack , так как toList удаляет информацию о заморозке.

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

Подробности примера

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

Связанные типы

type Элемент CallStack Исходный код

Методы

fromList :: [Элемент CallStack] -> CallStack Исходный код

fromListN :: Целое число -> [Элемент CallStack] -> CallStack Исходный код

toList :: CallStack -> [Элемент CallStack] Исходный код

Show CallStack

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

Подробности примера

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

Методы

showsPrec :: Целое число -> CallStack -> ShowS Исходный код

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

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

type Элемент CallStack
Подробности примера

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

type Элемент CallStack = (Строка, SrcLoc)

fromCallSiteList :: [([Символ], SrcLoc)] -> CallStack Исходный код

Преобразовать список мест вызовов в CallStack.

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

getCallStack :: CallStack -> [([Символ], SrcLoc)] Исходный код

Извлечь список мест вызовов из CallStack.

Список отсортирован по последнему вызову.

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

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

Красиво вывести CallStack.

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

prettyCallStackLines :: CallStack -> [Строка] Исходный код

showCCSStack :: [Строка] -> [Строка] Исходный код

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

Одно местоположение в исходном коде.

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

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

SrcLoc

Поля

  • srcLocPackage :: [Char]
  • srcLocModule :: [Char]
  • srcLocFile :: [Char]
  • srcLocStartLine :: Int
  • srcLocStartCol :: Int
  • srcLocEndLine :: Int
  • srcLocEndCol :: Int
Примеры использования
Подробности примеров использования
Eq SrcLoc

С версии: base-4.9.0.0

Подробности примера

Определено в GHC.Stack.Types

Методы

(==) :: SrcLoc -> SrcLoc -> Bool Источник

(/=) :: SrcLoc -> SrcLoc -> Bool Источник

Show SrcLoc

С версии: base-4.9.0.0

Подробности примера

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

Методы

showsPrec :: Int -> SrcLoc -> ShowS Источник

show :: SrcLoc -> String Источник

showList :: [SrcLoc] -> ShowS Источник

prettySrcLoc :: SrcLoc -> String Источник

Красивый вывод SrcLoc.

С версии: base-4.9.0.0

© 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.html

Spec-Zone.ru

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