1-
class
DivisionByZero{
public static void main(String[]
sArgs){
int i=1/0;
}
}
Il y a sortie du programme car c'est la JVM qui va capturer l'exception mais en dehors de la classe.
2-
class DivisionByZero{
public static void main(String[] sArgs){
int i;
try{
i=1/0;
}
catch(Exception e){
}
}
}
L'exception générée est une ArithmeticException
3-
class
DivisionByZero{
public static void main(String[]
sArgs){
int i;
try{
i=1/0;
}
catch(Exception e){
System.out.println("Attention erreur !");
e.printStackTrace();
}
}
}
4-
class
DivisionByZero{
public static void main(String[]
sArgs){
int i;
try{
i=1/0;
}
catch(Exception e){
System.out.println("Attention erreur !");
e.printStackTrace();
i=1;
....
}
}
}
1-
class AgeCapException extends Exception{
int iAge;
AgeCapException(int iAge){
this.iAge=iAge;
}
public String
toString(){
return new String(iAge +" n'est
pas un âge valide");
}
}
2-
import java.io.*;
class AgeCap {
int
iAge;
public static void main(String[] sArgs){
new AgeCap(); //le main sert uniquement à
instancier la classe courante, ceci évite d'avoir à
utiliser des variables et méthodes statiques
}
AgeCap(){
try{
iAge=getAgeCap();
System.out.println("Age=
"+iAge+" ans");
}
catch(AgeCapException ace){
ace.printStackTrace();
}
catch(Exception e){ //on capture toutes les autres exceptions
e.printStackTrace();
}
}
public int getAgeCap() throws
AgeCapException,Exception{
char
c;
int iAge;
System.out.print("Age du
capitaine : ");
BufferedReader
br=new BufferedReader(new InputStreamReader(System.in));
String
sAge=br.readLine();
iAge=Integer.parseInt(sAge.trim());
//le trim enlève le '\n' et parseInt() transforme un String en
int primitif
if (iAge<18
|| iAge>65){
throw new AgeCapException(iAge); //on lève une AgeCapException
en cas d'erreur
}
return iAge;
}
}
3-
import java.io.*;
class AgeCap {
int
iAge;
public static void main(String[] sArgs){
new AgeCap();
}
AgeCap(){
iAge=getAgeCap();
System.out.println("Age=
"+iAge+" ans");
}
public
int getAgeCap(){
char
c;
System.out.print("Age
du capitaine : ");
BufferedReader
br=new BufferedReader(new
InputStreamReader(System.in));
try{
String
sAge=br.readLine();
iAge=Integer.parseInt(sAge.trim());
if
(iAge<18 || iAge>65){
throw
new AgeCapException(iAge);
}
}
catch(AgeCapException
ace){
ace.printStackTrace();
iAge=0;
}
catch(Exception e){
e.printStackTrace();
iAge=0;
}
return iAge;
}
}
4-
import java.io.*;
class AgeCap {
int
iAge;
public static void main(String[] sArgs){
new AgeCap();
}
AgeCap(){
int iComp=0;
boolean
bQuit=false;
while(!bQuit){
try{
iAge=getAgeCap();
System.out.println("Age= "+iAge+"
ans");
bQuit=true;
}
catch(Exception e){
e.printStackTrace();
iComp++;
System.out.println(iComp+" essai(s)");
}
}
}
public int getAgeCap() throws Exception{
char c;
System.out.print("Age du
capitaine : ");
BufferedReader
br=new BufferedReader(new
InputStreamReader(System.in));
try{
String
sAge=br.readLine();
iAge=Integer.parseInt(sAge.trim());
if (iAge<18
|| iAge>65){
throw
new AgeCapException(iAge);
}
}
catch(AgeCapException ace){
//on capture l'AgeCapException
ace.printStackTrace();
throw new
Exception(); //on lève une Exception
}
catch(Exception e){
e.printStackTrace();
throw new
Exception(); //on lève une Exception
}
return iAge;
}
}
1 et
2-
class WrongPwdException extends Exception{
public String toString(){
return
"Mauvais mot de passe";
}
}
class WrongInputLengthException extends Exception{
public String toString(){
return "Trop de
caractères en entrée";
}
}
class WrongLoginException extends
Exception{
public String toString(){
return "login inexistant";
}
}
3-
import
java.io.*;
class Login{
static final String
sRightLogin="scott";
static final String
sRightPwd="tiger";
public static void
main(String[] sArgs){
new Login();
}
Login(){
while(true){
try{
getUserPwd();
System.out.println("Login/mot de
passe valides");
}
catch(WrongLoginException wle){
wle.printStackTrace();
}
catch(WrongPwdException wpe){
wpe.printStackTrace();
}
catch(WrongInputLengthException wile){
wile.printStackTrace();
System.exit(0);
//risque d'attaque, on sort du programme
}
catch(IOException ioe){
ioe.printStackTrace();
System.exit(0);
//risque d'attaque, erreur d'entrée/sortie
}
catch(Exception e){
e.printStackTrace();
System.exit(0); //Pbm
inconnu, pour ne pas prendre de risque, on sort
}
}
}
public void getUserPwd() throws
WrongLoginException,WrongPwdException,WrongInputLengthException,IOException{
char c;
String sLogin="";
String sPwd="";
System.out.println("Utilisateur: ");
BufferedReader br=new BufferedReader(new
InputStreamReader(System.in));
sLogin=br.readLine();
System.out.println("Mot
de passe:");
sPwd=br.readLine();
if (sLogin.length()>8 || sPwd.length()>8){
throw new WrongInputLengthException();
}
if (!sLogin.trim().equals(sRightLogin)){
throw new WrongLoginException();
}
if (!sPwd.trim().equals(sRightPwd)){
throw new WrongPwdException();
}
}
}