Movatterモバイル変換


[0]ホーム

URL:


{-# LANGUAGE Trustworthy #-}{-# LANGUAGE NoImplicitPrelude, DeriveDataTypeable, MagicHash #-}{-# OPTIONS_GHC -funbox-strict-fields #-}{-# OPTIONS_HADDOCK hide #-}------------------------------------------------------------------------------- |-- Module      :  GHC.IO.Exception-- Copyright   :  (c) The University of Glasgow, 2009-- License     :  see libraries/base/LICENSE---- Maintainer  :  libraries@haskell.org-- Stability   :  internal-- Portability :  non-portable---- IO-related Exception types and functions-------------------------------------------------------------------------------moduleGHC.IO.Exception(BlockedIndefinitelyOnMVar(..),blockedIndefinitelyOnMVar,BlockedIndefinitelyOnSTM(..),blockedIndefinitelyOnSTM,Deadlock(..),AssertionFailed(..),AsyncException(..),stackOverflow,heapOverflow,ArrayException(..),ExitCode(..),ioException,ioError,IOError,IOException(..),IOErrorType(..),userError,assertError,unsupportedOperation,untangle,)whereimportGHC.BaseimportGHC.ListimportGHC.IOimportGHC.ShowimportGHC.ReadimportGHC.ExceptionimportData.MaybeimportGHC.IO.Handle.TypesimportForeign.C.TypesimportData.Typeable(Typeable)-- -------------------------------------------------------------------------- Exception datatypes and operations-- |The thread is blocked on an @MVar@, but there are no other references-- to the @MVar@ so it can't ever continue.dataBlockedIndefinitelyOnMVar=BlockedIndefinitelyOnMVarderivingTypeableinstanceExceptionBlockedIndefinitelyOnMVarinstanceShowBlockedIndefinitelyOnMVarwhereshowsPrec_BlockedIndefinitelyOnMVar=showString"thread blocked indefinitely in an MVar operation"blockedIndefinitelyOnMVar::SomeException-- for the RTSblockedIndefinitelyOnMVar=toExceptionBlockedIndefinitelyOnMVar------- |The thread is waiting to retry an STM transaction, but there are no-- other references to any @TVar@s involved, so it can't ever continue.dataBlockedIndefinitelyOnSTM=BlockedIndefinitelyOnSTMderivingTypeableinstanceExceptionBlockedIndefinitelyOnSTMinstanceShowBlockedIndefinitelyOnSTMwhereshowsPrec_BlockedIndefinitelyOnSTM=showString"thread blocked indefinitely in an STM transaction"blockedIndefinitelyOnSTM::SomeException-- for the RTSblockedIndefinitelyOnSTM=toExceptionBlockedIndefinitelyOnSTM------- |There are no runnable threads, so the program is deadlocked.-- The @Deadlock@ exception is raised in the main thread only.dataDeadlock=DeadlockderivingTypeableinstanceExceptionDeadlockinstanceShowDeadlockwhereshowsPrec_Deadlock=showString"<<deadlock>>"------- |'assert' was applied to 'False'.dataAssertionFailed=AssertionFailedStringderivingTypeableinstanceExceptionAssertionFailedinstanceShowAssertionFailedwhereshowsPrec_(AssertionFailederr)=showStringerr------- |Asynchronous exceptions.dataAsyncException=StackOverflow-- ^The current thread\'s stack exceeded its limit.-- Since an exception has been raised, the thread\'s stack-- will certainly be below its limit again, but the-- programmer should take remedial action-- immediately.|HeapOverflow-- ^The program\'s heap is reaching its limit, and-- the program should take action to reduce the amount of-- live data it has. Notes:----      * It is undefined which thread receives this exception.----      * GHC currently does not throw 'HeapOverflow' exceptions.|ThreadKilled-- ^This exception is raised by another thread-- calling 'Control.Concurrent.killThread', or by the system-- if it needs to terminate the thread for some-- reason.|UserInterrupt-- ^This exception is raised by default in the main thread of-- the program when the user requests to terminate the program-- via the usual mechanism(s) (e.g. Control-C in the console).deriving(Eq,Ord,Typeable)instanceExceptionAsyncException-- | Exceptions generated by array operationsdataArrayException=IndexOutOfBoundsString-- ^An attempt was made to index an array outside-- its declared bounds.|UndefinedElementString-- ^An attempt was made to evaluate an element of an-- array that had not been initialized.deriving(Eq,Ord,Typeable)instanceExceptionArrayExceptionstackOverflow,heapOverflow::SomeException-- for the RTSstackOverflow=toExceptionStackOverflowheapOverflow=toExceptionHeapOverflowinstanceShowAsyncExceptionwhereshowsPrec_StackOverflow=showString"stack overflow"showsPrec_HeapOverflow=showString"heap overflow"showsPrec_ThreadKilled=showString"thread killed"showsPrec_UserInterrupt=showString"user interrupt"instanceShowArrayExceptionwhereshowsPrec_(IndexOutOfBoundss)=showString"array index out of range".(ifnot(nulls)thenshowString": ".showStringselseid)showsPrec_(UndefinedElements)=showString"undefined array element".(ifnot(nulls)thenshowString": ".showStringselseid)-- ------------------------------------------------------------------------------- The ExitCode type-- We need it here because it is used in ExitException in the-- Exception datatype (above).-- | Defines the exit codes that a program can return.dataExitCode=ExitSuccess-- ^ indicates successful termination;|ExitFailureInt-- ^ indicates program failure with an exit code.-- The exact interpretation of the code is-- operating-system dependent.  In particular, some values-- may be prohibited (e.g. 0 on a POSIX-compliant system).deriving(Eq,Ord,Read,Show,Typeable)instanceExceptionExitCodeioException::IOException->IOaioExceptionerr=throwIOerr-- | Raise an 'IOError' in the 'IO' monad.ioError::IOError->IOaioError=ioException-- ----------------------------------------------------------------------------- IOError type-- | The Haskell 98 type for exceptions in the 'IO' monad.-- Any I\/O operation may raise an 'IOError' instead of returning a result.-- For a more general type of exception, including also those that arise-- in pure code, see "Control.Exception.Exception".---- In Haskell 98, this is an opaque type.typeIOError=IOException-- |Exceptions that occur in the @IO@ monad.-- An @IOException@ records a more specific error type, a descriptive-- string and maybe the handle that was used when the error was-- flagged.dataIOException=IOError{ioe_handle::MaybeHandle,-- the handle used by the action flagging-- the error.ioe_type::IOErrorType,-- what it was.ioe_location::String,-- location.ioe_description::String,-- error type specific information.ioe_errno::MaybeCInt,-- errno leading to this error, if any.ioe_filename::MaybeFilePath-- filename the error is related to.}derivingTypeableinstanceExceptionIOExceptioninstanceEqIOExceptionwhere(IOErrorh1e1loc1str1en1fn1)==(IOErrorh2e2loc2str2en2fn2)=e1==e2&&str1==str2&&h1==h2&&loc1==loc2&&en1==en2&&fn1==fn2-- | An abstract type that contains a value for each variant of 'IOError'.dataIOErrorType-- Haskell 98:=AlreadyExists|NoSuchThing|ResourceBusy|ResourceExhausted|EOF|IllegalOperation|PermissionDenied|UserError-- GHC only:|UnsatisfiedConstraints|SystemError|ProtocolError|OtherError|InvalidArgument|InappropriateType|HardwareFault|UnsupportedOperation|TimeExpired|ResourceVanished|InterruptedinstanceEqIOErrorTypewherex==y=getTagx==#getTagyinstanceShowIOErrorTypewhereshowsPrec_e=showString$caseeofAlreadyExists->"already exists"NoSuchThing->"does not exist"ResourceBusy->"resource busy"ResourceExhausted->"resource exhausted"EOF->"end of file"IllegalOperation->"illegal operation"PermissionDenied->"permission denied"UserError->"user error"HardwareFault->"hardware fault"InappropriateType->"inappropriate type"Interrupted->"interrupted"InvalidArgument->"invalid argument"OtherError->"failed"ProtocolError->"protocol error"ResourceVanished->"resource vanished"SystemError->"system error"TimeExpired->"timeout"UnsatisfiedConstraints->"unsatisified constraints"-- ultra-precise!UnsupportedOperation->"unsupported operation"-- | Construct an 'IOError' value with a string describing the error.-- The 'fail' method of the 'IO' instance of the 'Monad' class raises a-- 'userError', thus:---- > instance Monad IO where-- >   ...-- >   fail s = ioError (userError s)--userError::String->IOErroruserErrorstr=IOErrorNothingUserError""strNothingNothing-- ----------------------------------------------------------------------------- Showing IOErrorsinstanceShowIOExceptionwhereshowsPrecp(IOErrorhdliotlocs_fn)=(casefnofNothing->casehdlofNothing->idJusth->showsPrecph.showString": "Justname->showStringname.showString": ").(caselocof""->id_->showStringloc.showString": ").showsPrecpiot.(casesof""->id_->showString" (".showStrings.showString")")assertError::Addr#->Bool->a->aassertErrorstrpredicatev|predicate=v|otherwise=throw(AssertionFailed(untanglestr"Assertion failed"))unsupportedOperation::IOErrorunsupportedOperation=(IOErrorNothingUnsupportedOperation"""Operation is not supported"NothingNothing){-(untangle coded message) expects "coded" to be of the form        "location|details"It prints        location message details-}untangle::Addr#->String->Stringuntanglecodedmessage=location++": "++message++details++"\n"wherecoded_str=unpackCStringUtf8#coded(location,details)=case(spannot_barcoded_str)of{(loc,rest)->caserestof('|':det)->(loc,' ':det)_->(loc,"")}not_barc=c/='|'

[8]ページ先頭

©2009-2025 Movatter.jp