_matherr
Zpracovává chyby math.
int _matherr(
struct _exception *except
);
Parametry
- s výjimkou
Ukazatel na strukturu obsahující informace o chybě.
Vrácená hodnota
_matherr vrátí hodnotu 0 k označení chyby nebo nenulová hodnota označuje úspěch.Pokud _matherr vrátí 0 chybové zprávy mohou být zobrazeny a errno nastavena na hodnotu odpovídající chybovou hodnotu.Pokud _matherr vrátí nenulovou hodnotu žádná chybová zpráva se zobrazí a errno zůstane beze změny.
Další informace o návratové kódy, viz _doserrno, kód chyby, _sys_errlist a _sys_nerr.
Poznámky
_Matherr funkce zpracovává chyby generované čárce funkce math library.Tyto funkce volání _matherr Pokud je zjištěna chyba.
Pro zpracování zvláštních chyb může poskytovat různé definice _matherr.Pokud používáte dynamicky propojených verze C Runtime library (Msvcr90.dll), můžete nahradit výchozí _matherr rutinní na klientovi spustitelné verze definované uživatelem.Nelze však nahradit výchozí _matherr rutinní v knihovně DLL klienta z Msvcr90.dll.
Pokud dojde k chybě v rutině math, _matherr je volána s ukazatel na _exception struktury (definované v Math.h) zadejte jako argument._Exception struktury obsahuje následující prvky.
typ int
Typ výjimky.CHAR * název
Název funkce, kde došlo k chybě.dvojité arg1, arg2
První a druhé (pokud existuje) argumenty funkce.dvojité retval.
Hodnota vrácená funkcí v.
Typu Určuje typ chyby math.Je jedna z následujících hodnot definovaných v Math.h.
_DOMAIN
Chyba argument domény._SING
Argument singularity._OVERFLOW
Chyba v oblasti přetečení._PLOSS
Částečnou ztrátu významu._TLOSS
Celková ztráta význam._UNDERFLOW
Výsledkem je zastoupen příliš malá.(Tato podmínka není podporována aktuálně.)
Struktura členské název je ukazatel na zakončený řetězec obsahující název funkce, která způsobila chybu.Struktura členy arg1 a arg2 zadat hodnoty, které způsobily chybu.(Pokud pouze jeden argument není uveden, je uložen v arg1.)
Vrátit výchozí hodnotu pro dané chyby je retval.Pokud změníte vrácená hodnota, musí určit, zda skutečně došlo k chybě.
Požadavky
Rutina |
Požadované záhlaví |
---|---|
_matherr |
<math.h> |
Další informace o kompatibilitě v tématu Compatibility v úvodu.
Knihovny
Všechny verze C Runtime knihovny.
Příklad
// crt_matherr.c
/* illustrates writing an error routine for math
* functions. The error function must be:
* _matherr
*/
#include <math.h>
#include <string.h>
#include <stdio.h>
int main()
{
/* Do several math operations that cause errors. The _matherr
* routine handles _DOMAIN errors, but lets the system handle
* other errors normally.
*/
printf( "log( -2.0 ) = %e\n", log( -2.0 ) );
printf( "log10( -5.0 ) = %e\n", log10( -5.0 ) );
printf( "log( 0.0 ) = %e\n", log( 0.0 ) );
}
/* Handle several math errors caused by passing a negative argument
* to log or log10 (_DOMAIN errors). When this happens, _matherr
* returns the natural or base-10 logarithm of the absolute value
* of the argument and suppresses the usual error message.
*/
int _matherr( struct _exception *except )
{
/* Handle _DOMAIN errors for log or log10. */
if( except->type == _DOMAIN )
{
if( strcmp( except->name, "log" ) == 0 )
{
except->retval = log( -(except->arg1) );
printf( "Special: using absolute value: %s: _DOMAIN "
"error\n", except->name );
return 1;
}
else if( strcmp( except->name, "log10" ) == 0 )
{
except->retval = log10( -(except->arg1) );
printf( "Special: using absolute value: %s: _DOMAIN "
"error\n", except->name );
return 1;
}
}
printf( "Normal: " );
return 0; /* Else use the default actions */
}
Výsledek
Special: using absolute value: log: _DOMAIN error
log( -2.0 ) = 6.931472e-001
Special: using absolute value: log10: _DOMAIN error
log10( -5.0 ) = 6.989700e-001
Normal: log( 0.0 ) = -1.#INF00e+000
Ekvivalent v rozhraní .NET Framework
Nelze použít Použijte volání funkce standardní C, PInvoke. Další informace naleznete v tématu Příklady vyvolat platformu.