2010-10-19 14 views
7

Duplicar posibles:
C : How do you simulate an 'exception' ?manipulación en C puro Excepción

Hola, sé que el manejo de excepciones está disponible en C++, pero no en C. Pero también leo que el manejo de excepciones es proporcionado desde el lado del sistema operativo, entonces ¿no hay alguna función para C que invoque el mismo comportamiento desde el sistema operativo como try catch y throw? Gracias.

+6

Duplicado: [C: ¿Cómo se simula una 'excepción'?] (Http://stackoverflow.com/questions/1219438/), [¿Cómo implemento excepciones con una declaración de try-catch-finally encajable con mensajes en C] (http://stackoverflow.com/questions/1779189/), [Exception libraries for C (not C++)] (http://stackoverflow.com/questions/3581818/), [Exception libraries for C (not C++)] (http://stackoverflow.com/questions/1410329/) y relacionadas: [¿Cómo se implementan las excepciones bajo el capó?] (http://stackoverflow.com/questions/1995734/), [Cómo lanzar una excepción en C?] (http://stackoverflow.com/questions/2891766/) etc. – dmckee

+0

Vamos, B.Gen, no eres nuevo aquí. Ya sabes cómo funcionan las cosas. – dmckee

Respuesta

7

El lenguaje C en sí no admite la gestión de excepciones. Sin embargo, existe un medio para el manejo de excepciones para C en base a una plataforma + compiladora específica.

En Windows, por ejemplo, los programas C pueden usar el manejo de excepciones SEH.

argumentos que he visto en el pasado que la pareja función C setjmp y longjmp es el manejo de excepciones en C. Considero que es más cerca del patrón de eyección pero vale la pena investigar

1

No de una manera independiente de la plataforma. Y esto solo sería para excepciones de hardware/nivel de sistema operativo, no de SW.

2

C proporciona excepciones en una biblioteca estándar: setjmp()/longjmp().