
// ******* Tipologie di errori

public class Esempio04 {
	static int x;
	static String y;
		
	public static void main(String[] args) {
		
		// ***********************************************
		// *** Errori statici o "a tempo di compilazione"
		//
		// Vengono rilevati *prima* che il programma venga eseguito
		// Alcuni esempi:
		
		// Errore statico di sintassi: mi dimentico il punto e virgola
		// Syntax error, insert ";" to complete BlockStatements
		x = 10  

		// Assegnamenti corretti
		x = 10;
		y = "Ciao!";

		// Errore statico di tipo: mischio int con String
		// Type mismatch: cannot convert from int to String
		x = y;
		
		// Errore statico: variabile non dichiarata
		// z cannot be resolved to a variable
		z = 10;
		
		// ***********************************************
		// *** Errori dinamici o "a tempo di esecuzione"
		//
		// Vengono rilevati solo durante l'esecuzione del programma.
				
		// Errore dinamico: divido per zero
		// Exception in thread "main" java.lang.ArithmeticException: / by zero
		x = 10;
		x = 1000 / (x-10);
		
		// ***********************************************
		// *** Errori logici
		//
		// Non vengono rilevati: il programma ha perfettamente senso, 
		// ma non fa quello che si ci aspetta.
		
		// Esempio:
		x = 10;
		System.out.println("Ecco x: " + x);
		System.out.println("Ecco x più uno: " + (x-1)); // Ops!
				
	}

}
