2. La sintaxis básica de manejo de excepciones
El siguiente es un ejemplo de un código básico, lo que indica un saque de banda, el try , capturas uso básico, la captura coincide con el tipo de forma automática:
. 1 #include <la iostream> 2 #include < cadena > 3. 4. El uso de espacio de nombres STD; 5. 6. Int test_1 ( int NUM) 7. { 8. IF (NUM =! 0 ) 9. { 10 de banda - 1. ; // lanza una tipo int excepción, si es mayor de 30 Hechos 1, a continuación, la excepción será lanzada intento a la línea 36 . 11 } 12 es la otra cosa { 13 es de banda nueva nueva cadena ( " tiros cadena de excepción "); // lanzar una cadena excepción, si más de 30 Actos 0, entonces la cadena lanzará una excepción, la captura 42 coincidirá con la línea 14 } 15 16 de retorno 0 ; . 17 } 18 es . 19 int test_2 ( int NUM ) // función anidación 20 es { 21 es test_1 (NUM); 22 es el retorno 0 ; 23 es } 24 25 int main () 26 es { 27 int RET = 0 ; 28 try // el valor de retorno del método será por debajo de la try la captura captura 29 { 30 RET = test_2 ( 1 ); // pasar por encima de 1, se captura de banda test_1 -1, 41 saltará directamente a la línea. 31 es } 32 la captura ( int error) { // valor capturado pasado a la variable de error 33 es el printf ( " anormal de D% \ n-! " , Error); 34 es } 35 la captura ( Cadena * error) 36 { 37 [ el printf ( " captura de cadena excepción:% S " , error-> el c_str ()); //Si la línea 30 se hace pasar en el pasado excepción 0, puede ser lanzado para un tipo adecuado de cadena 38 es Delete error; 39 } 40 la captura (...) { // si no tipo adecuado en este documento entrará en un comodín, Si esta línea no ha terminado con intenta pasar un compilador de punto flotante no se desprenderá. 41 es el printf ( " la captura ... \ n " ); 42 es } 43 es 44 es el retorno 0 ; 45 }
Aquí están diciendo acerca de la situación tiros interceptado, el mismo código de seguridad:
Si test_2 interceptado una excepción en test_1, entonces la llamada a la función principal no obtendrá una excepción, a menos que se lanza de nuevo en test_2 2 (tales como 29 líneas).
. 1 #include <la iostream> 2 #include < cadena > 3. 4. El uso de espacio de nombres STD; 5. 6. Int test_1 ( int NUM) 7. { 8. IF (NUM =! 0 ) 9. { 10 de banda - 1. ; // lanza una tipo int anormalidad, el retorno a la línea 20 11. } else { 12 es de banda nueva nueva cadena ( " lanza una cadena de excepción " ); 13 } 14 15 de retorno 0 ; 16 } . 17 18 es int test_2 ( int NUM) 19. { 20 es try // Si esta excepción se detecta, la primera fila 38 tratará de excepciones de captura no test_1 21 es { 22 es test_1 (NUM); 23 es } 24 de la captura (...) { 25 printf ( " excepción test_2 se lanza " ); 26 es de banda de 0,01 ; 27 } 28 29 / * de banda * / 30 //Aquí si tiramos, 38 serán recibidos anormalidad línea de nuevo test_1 31 es 32 de retorno 0 ; 33 es } 34 es 35 int main () 36 { 37 [ int RET = 0 ; 38 es el try 39 { 40 RET test_2 = ( 1. ); // pase 1 en el pasado, serán arrojados test_1 -1 en un saque de banda 41 es } 42 es la captura ( int error) { 43 es el printf ( " anormal de D% \ n-! " , error); 44 es } 45 la captura ( Cadena * error) 46 es { 47 printf ( " captura de cadena excepción:% S " , error-> el c_str ()); 48 Eliminar el error; 49 } 50 la captura (...) { 51 es el printf ( " la captura ... \ n " ); 52 es } 53 es 54 es el retorno 0 ; 55 }
3. Excepción declaración de interfaz de manipulación
4. tipo anormal de ciclo de vida
4.1 los tipos básicos de tiro:
4.2 el tipo de cadena de tiro:
4.3 de banda un tipo de clase de excepción:
5. Excepciones y herencia
6. La idea básica de manejo de excepciones
7. La clase de excepción biblioteca estándar