¿Qué pasaría si agregamos ‘throws Exception’ al método principal en java?

En java, las excepciones se manejan lanzando un objeto de excepción usando la palabra clave “throw” o escribiendo una lista de excepciones con la definición de la función como main (), método para proteger el método contra esas excepciones.

Vea el siguiente ejemplo:
public static void main (String args []) lanza IOException
{
BufferedReader b = new BufferedReader (nuevo InputStreamReader (System. In));
}

En el código anterior se crea el objeto de BufferedReader que arroja IOException si se produce algún error al leer E / S.

Entonces, simplemente escribimos la palabra clave throws seguida del nombre de la clase de excepción. Entonces, muestra el método que está llamando al método main (), es decir, JVM manejará las IOExceptions que pueden ocurrir en el método main ().

Para más detalles, consulte el siguiente enlace:
Java lanza palabra clave – javatpoint

Es perfectamente válido para main para lanzar Exception . Se maneja de la misma manera que se manejan las excepciones no controladas: el entorno hace algo con él.

La especificación en realidad no dice lo que tiene que hacer, aunque cualquier JVM lo va a registrar en alguna parte. En el caso de la JVM de línea de comandos, escribe un seguimiento de la pila en la consola y finaliza el subproceso. (Que puede o no terminar la JVM, dependiendo de qué otros subprocesos se estén ejecutando).

Perfectamente, escenario válido con cláusula throws agregada a la firma del método main ()

Generalmente, la cláusula throws agregada a cualquier método indica que; el método correspondiente es posiblemente arroja alguna excepción y debe manejarse invocador o llamador

De manera similar, llamador del método main () es decir; JVM necesita manejar la excepción lanzada desde el método main ()

A continuación, la respuesta de Quora para mí, lo ayudará a comprender mejor el manejo de excepciones en Java

¿Cuál es la principal diferencia entre lanzamientos y try-catch en Java?

Si arroja una excepción marcada, la firma del método principal debe declarar esto, o obtendrá un error de compilación.

Si lanza una excepción de tiempo de ejecución o una excepción de error, no necesita declarar esto en la firma del método, como en cualquier otro método.

Lo que sucederá cuando no se detecte una excepción en el método principal, es que el subproceso en ejecución finalizará y la excepción se imprimirá en sysout.
Si no hay otros subprocesos en ejecución, todo el proceso finalizará.

Cuando declaramos una excepción usando throws en el método, significa que la persona que llama tiene que manejarlo. En el caso del método principal, la persona que llama será la JVM, por lo que la excepción será manejada por el controlador de excepciones predeterminado en Java, que simplemente puede imprimir la excepción a la salida estándar. Lea más sobre el manejo de excepciones,
http://www.javatechblog.com/java

Los lanzamientos desde el método principal siempre se manejarán en el método secundario mediante try-catch. Pero en el caso de main con throws, simplemente registra una excepción en la consola y termina el subproceso que se ejecuta en JVM.

Consulte el siguiente ejemplo para obtener más aclaraciones.
public static void main (String [] args) lanza Exception {

Cadena str = nulo;

System.out.println (“esto será …”);

int x = str.length ();

System.out.println (“esto no …”);

}

no pasa nada fuera de lo común. esta declaración solo declara que “este bloque de código ( main () en este caso) podría arrojar una excepción de tipo Exception, por lo que es mejor que lo maneje aquí, de lo contrario, se lanzará a la devolución de llamada (desde donde se llama el método) ) que es JVM en este caso “.

Si se agrega un bloque try-catch a main y catch no relanza la excepción, entonces se dice que se maneja en main (), de lo contrario, la JVM lo maneja.