Une interruption est utilisée pour gérer des évenements provenant de l'extérieur (clavier, souris, carte, ...) alors qu'une exception est utilisée pour gérer des erreurs dans le programme comme des divisions par zéro. Le traitement déclenché produit une conséquence identique dans les 2 cas : l'interruption du flot normal du programme et la redirection vers une routine de traitement de cette interruption/exception.
Au niveau interne, une interruption est gérée par le processeur une fois l'instruction courante terminée. Si le processeur reçoit un signal sur sa broche d'interruption, il va rechercher l'adresse de la routine de traitement de cette interruption dans la table des interruptions, et transmettre le controle du programme à cette routine. Une fois celle ci terminée, le processeur va continuer l'exécution du programme à l'endroit où il a été stoppé par l'interruption.
En ce qui concerne les exceptions, il en existe 3 sortes :
- les Faults : elles sont détectées et gérées par le processeur avant les instructions ayant provoqué la Fault
- les Traps : à l'inverse des faults, elles sont gérées par le processeur après exécution de l'instruction ayant causé la Trap. Les interruptions définies par l'utilisateur entrent également dans cette catégorie.
- les Aborts : utilisées uniquement pour signaler de graves problèmes systèmes, lorsque plus aucune opération n'est possible.
Voila
---------------
J'ai un string dans l'array (Paris Hilton)