¿Cómo funciona exactamente el código de salida de la aplicación Java del método main ()?

Tengo las siguientes dudas relacionadas con una aplicación Java de línea de comandos simple.

Entonces tengo esta aplicación de línea de comando que es iniciada por unprincipal() método definido dentro de unPrincipal clase.

Como siempre estoprincipal() El método se define con esta firma:

public static void main(String[] args) {

Entonces, el tipo de retorno esvacío. Por lo tanto, debería significar que no devuelve ningún valor.

Pero, ¿por qué cuando su ejecución finaliza correctamente obtengo este mensaje en la consola IntelliJ?

Disconnected from the target VM, address: '127.0.0.1:54090', transport: 'socket'

Process finished with exit code 0

¿Qué representa exactamente elcódigo de salida 0?

Creo que significa que el programa ha completado correctamente su ejecución sin incurrir en ningún error.

Entonces ahora tengo las siguientes 2 dudas:

Si es cierto por qué sucede si miprincipal() método de retornovacío?

¿Cómo puedo devolver un código de salida diferente si mi aplicación finaliza con un error? ¿Existe un valor de código de salida estándar para terminar con errores?

TNX

Respuestas a la pregunta(3)

Su respuesta a la pregunta