none
excepcion integer divide by zero,como atrapar esta excepcion de hardware??

    Pregunta

  • Hola gente del foro,he visto en muchas paginas sobre como tratar el manejo de excepciones de hardware,pero la verdad es que me ha confundido bastante,vi que esta la funcion signal() y los bloques __try y __finally,pero no entiendo,estare esperando sus respuestas y se me pueden dar un ejemplo.

    gracias

    domingo, 1 de julio de 2018 19:23

Todas las respuestas

  • ¿Qué versión de Visual Studio?  Yo acabo de escribir el siguiente programa de consola en VS 2017.  La operación no da error, y el resultado es infinito.  ¿Está usando otro tipo de datos distinto a double?

    // CppConsoleApp1.cpp: define el punto de entrada de la aplicación de consola.
    //
    
    #include "stdafx.h"
    #include <iostream>
    
    int main()
    {
        double a, b, c;
        a = 0.0;
        b = 1.0;
        c = b / a;
        std::cout << "C:  " << c << std::endl;
        return 0;
    }

    Esta es la salida:

    C:  inf
    Presione una tecla para continuar . . .

    Jose R. MCP
    My GIT Repositories | Mis Repositorios GIT


    domingo, 1 de julio de 2018 21:53
    Moderador
  • Windows tiene un mecanismo propio que te permite atrapar las excepciones de hardware. Busca por SEH o Structured Exception Handling.

    int a = 5;
    
    __try
    {
    	int b = a / 0;
    }
    __except (GetExceptionCode() == EXCEPTION_INT_DIVIDE_BY_ZERO ?
    	EXCEPTION_EXECUTE_HANDLER : EXCEPTION_CONTINUE_SEARCH)
    {
    	MessageBox(0, L"División por cero", L"Excepción", 0);
    }



    • Editado Walteг domingo, 1 de julio de 2018 22:08
    domingo, 1 de julio de 2018 22:03
  • Estoy usando el visual studio 2017,lo que no dije es que estoy trabajando en Win32 y no en la consola,de todas formas lo intentare en la consola por que no lo he hecho.
    lunes, 2 de julio de 2018 1:31
  • Pues si es un programa de Windows no es problema.  Yo usé consola por la facilidad para probar, pero el punto aplica:  En mi caso, usando double, no obtengo excepción.  ¿Está usando double?  Es la parte importante.  Idealmente, muéstrenos el fragmento de código.

    Jose R. MCP
    My GIT Repositories | Mis Repositorios GIT

    lunes, 2 de julio de 2018 1:42
    Moderador