> For the complete documentation index, see [llms.txt](https://educacion.gitbook.io/programacion/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://educacion.gitbook.io/programacion/ud4-elementos-da-programacion-orientada-a-obxectos/xerarquia-de-excepcions/xestion-de-excepcions.md).

# Xestión de excepcións

No momento no que se produce unha excepción créase un obxecto do tipo excepción correspondente e lánzase a excepción. Esta pode ser capturada permitindo realizar as accións oportunas. Por exemplo, se se produce unha excepción de tipo `IOException`<i class="fa-copy">:copy:</i> crearase unha instancia desa clase.

## Os bloques try e catch <a href="#id-321-os-bloques-try-e-catch" id="id-321-os-bloques-try-e-catch"></a>

Unha excepción ten a seguinte forma:

```java
try{
    // Sección de código que pode lanzar unha excepción
} catch(UnhaExcepcion e){
    // Sección que manexa a excepción "UnhaExcepcion"
} catch(OutraExcepcion e){
    // Sección que manexa a excepción "OutraExcepcion"
}
```

O bloque `try` delimita aquela ou aquelas instrucións onde se pode producir unha excepción. Se isto sucede, o control do programa transfírese ao bloque `catch` definido para o tipo de excepción que se produciu, pasando como parámetro o obxecto do tipo da excepción que se creou.

O bloque `catch` define as instrucións que se deberán executar en caso de que se produza un determinado tipo de excepción.

Consideracións:

* Non pode existir código entre o bloque `try` e `catch`.
* Poden haber varios bloques `catch` pero non pode ter declarada a mesa clase de excepción.
* Aínda que existan varios bloques `catch`, só se executará un deles.
* Os `catch` máis específicos deben estar situados por diante dos máis xenéricos en relación a xerarquía de herdanza. Se unha superclase dunha excepción aparece antes que unha subclase, a superclase capturará a excepción e a subclase nunca se executará.

  ```java
  public class ExemploCaptura {
      public static void main(String[] args) {
          try {
              int resultado = 10 / 0; // Xera ArithmeticException
          } catch (Exception e) { // Captura todo tipo de excepcións
              System.out.println("Excepción capturada por Exception.");
          } catch (ArithmeticException e) { // Nunca se executa
              System.out.println("Excepción aritmética capturada.");
          }
      }
  }
  ```

## O bloque finally <a href="#id-822-o-bloque-finally" id="id-822-o-bloque-finally"></a>

As excepcións poder ter un terceiro bloque non obrigatorio: `finally`<i class="fa-copy">:copy:</i>. Este bloque sempre se executa despois do bloque try, independentemente de que se lanzara ou non unha excepción.

```java
try{
    // Sección de código que pode lanzar unha excepción
} catch(UnhaExcepcion e){
    // Sección que manexa a excepción "UnhaExcepcion"
} catch(OutraExcepcion e){
    // Sección que manexa a excepción "OutraExcepcion"
} finally {
    //Sección que se executa sempre
}
```

{% hint style="warning" %}
O bloque `finally` úsase para executar código que debe realizarse sempre, independentemente de que se produza ou non unha excepción, como o peche de recursos ou a liberación de memoria.
{% endhint %}


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://educacion.gitbook.io/programacion/ud4-elementos-da-programacion-orientada-a-obxectos/xerarquia-de-excepcions/xestion-de-excepcions.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
