In C ++, il "Sigfpe" Il gestore del segnale gestisce il file Eccezioni del punto galleggiante (FPES). Quando un utente tenta di svolgere le attività menzionate, questo gestore di segnale viene chiamato. Una volta che il gestore del segnale è intervenuto, stampa un messaggio di errore in uscita standard e interrompe il programma.
Perché si verificano eccezioni a virgola mobile?
Eccezioni del punto galleggiante Può verificarsi a causa di errori di programmazione o quando un programma tenta di elaborare un valore che non è. Ad esempio, se un programma cerca di dividere un numero intero per zero o se un programma cerca di prendere la radice quadrata di un numero negativo, a Eccezione del punto galleggiante si verificherà. Inoltre, alcuni Eccezioni a punta mobile può verificarsi a causa di elaborazioni del processore.
Molti fattori, come operazioni inappropriate, underflow, overflow, divisione per zero e precisione, potrebbero provocare un Eccezione a punta mobile. Copriremo questi argomenti uno per uno in questa sezione.
1: operazione illegale
Quando un utente dimentica di esprimere un'operazione o l'operazione non ha alcun valore matematico, il programma non riesce a eseguire a causa di un'operazione non valida. Ciò include calcoli come la radice quadrata e il logaritmo di numeri negativi, ad esempio. Sebbene sia possibile prendere la radice quadrata di un numero negativo quando si tratta di numeri complessi, non esiste un meccanismo basato su computer per esprimerlo.
Inoltre, un'operazione errata risulterà se un software esegue un virgola mobile operazione su una posizione solo interi. Ciò è dovuto a una mancata corrispondenza tra l'operazione che si sta tentando di eseguire i dati (operazione a virgola mobile) e i dati memorizzati (intero).
2: divisione zero
UN Eccezione a punta mobile viene lanciato se si tenta di dividere un numero intero di zero. La stessa cosa si verifica quando si tenta di dividere per NAN o Infinito. Ecco alcuni esempi: 1/0, log (0).
3: Overflow
Quando un'operazione restituisce un valore al di fuori del suo intervallo previsto, si verifica un'eccezione di overflow. Il valore è più o inferiore al valore rappresentabile più piccolo, secondo questa affermazione.
4: Underflow
Il flusso si verifica quando un calcolo produce un risultato inferiore a quello che un tipo di dati può contenere.
5: inesatto
Quando il risultato di un'operazione differisce da ciò che era previsto, questo è noto come un'eccezione inesatta. Quando l'operazione viene eseguita con precisione non legata e un intervallo esponente, ciò si verifica.
In alcuni casi, tali situazioni possono essere gestite con grazia. Ad esempio, quando un programma tenta di dividere un numero per zero, è generalmente preferibile restituire un messaggio di errore e terminare con grazia il programma invece di consentire al programma di arrestare.
#includereIn questo codice, il Div La funzione è chiamata dal blocco di prova all'interno di principale. Se la Denom non è uguale a zero, IL Div La funzione restituisce il quoziente; Se lo è, a Eccezione di errore di runtime viene lanciato. Prima di chiamare la funzione con l'oggetto di errore di runtime E, il blocco catch intercetta questa eccezione e stampa il testo "Errore". Viene utilizzato per identificare l'eccezione. L'eccezione standard di classe, che è descritta in stdexcept file di intestazione, ha una funzione virtuale chiamata Che cosa(). Il messaggio "Errore matematico: tentato di dividere per 0" è stampato di conseguenza.
Produzione
Impedire Eccezioni del punto galleggiante In C ++, è essenziale controllare tutti i parametri passati alle funzioni, utilizzare formati appropriati e testare esplicitamente i divisori per valori zero. Inoltre, quando si utilizzano doppi tipi di dati, è importante ingrandire l'intervallo del tipo di dati se il programma richiede risultati aritmetici più grandi.
Conclusione
Eccezioni del punto galleggiante in C ++ sono causati da operazioni non valide sui valori numerici e possono influire sulla capacità del programma di eseguire correttamente. Per evitare tali errori, è importante controllare tutti i parametri passati alle funzioni e utilizzare i tipi di dati appropriati. Inoltre, è utile catturare Eccezioni del punto galleggiante.