[Java] Créer une excpetion

Fermé
jebok Messages postés 358 Date d'inscription lundi 16 mai 2005 Statut Membre Dernière intervention 23 octobre 2007 - 25 juil. 2005 à 12:25
 Utilisateur anonyme - 25 juil. 2005 à 13:31
Bonjour,

je souhaite créer une exception qui sera levé si le fichier sélectionné par l'utilisateur (dans mon application) ne respecte pas un certain format (exemple : les lignes du fichier doivent respecter un format spécifique).

Comment faire ? Que mettre dans ma classe MauvaisFormatException ?

Merci de votre aide
A voir également:

2 réponses

Utilisateur anonyme
25 juil. 2005 à 13:31
Tu trouveras ci-dessous un exemple (bête et méchant) de classe qui essaie d'ouvrir un fichier.

Si l'extension du fichier est différente de ".txt" ou ".log", une exception est levée (avec un message spécifique).
Si une ligne ne commence pas par "DATA#", la même exception est levée mauis avec un message différent.
Une fois que tout le fichier a été lu, une exception est levée si le fichier ne contient pas 100 lignes au minimum.

J'ai placé la classe d'excepion 'MauvaisFormatException' en classe interne, mais rien ne t'empêche de créer un classe à part entière (c'est même mieux).

Comme tu peux le voir, je stocke tous les messages que l'exception peut renvoyer dans des public static final String. Je passe le message qui convient en argument à l'exception
throw new MauvaisFormatException(MauvaisFormatException.BAD_FILE_FORMAT);


C'est la méthode getMessage() qu tu dois overrider (surcharger) dans ton exception


import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;

/*
 * Created on Jul 25, 2005
 *
 */

/**
 * @author Philippe Fery
 *
 */
public class ExceptionDemo {

	public ExceptionDemo() {
		super();
	}

	public void openfile(String filePath) throws MauvaisFormatException, FileNotFoundException, IOException {
		File file = new File(filePath);
		int lineCounter = 0;
		if (file.getName().endsWith(".txt") || file.getName().endsWith(".log")) {
			BufferedReader reader = new BufferedReader(new FileReader(file));
			String line = "";
			while ((line = reader.readLine()) != null) {
				lineCounter++;
				if (line.startsWith("DATA#")) {} else {
					throw new MauvaisFormatException(MauvaisFormatException.BAD_FILE_FORMAT);
				}
			}
			if (lineCounter < 100) {
				throw new MauvaisFormatException(MauvaisFormatException.BAD_FILE_EXTENSION);
			}
		} else {
			throw new MauvaisFormatException(MauvaisFormatException.BAD_FILE_LENGTH);
		}

	}

	class MauvaisFormatException extends Exception {
		public static final String BAD_FILE_EXTENSION = "Extension de fichier non valide";
		public static final String BAD_FILE_FORMAT = "Mauvais format de fichier";
		public static final String BAD_FILE_LENGTH = "Mauvaise taille de fichier";
		public String message;

		public MauvaisFormatException() {
			super();
			this.message = BAD_FILE_FORMAT;
		}

		public MauvaisFormatException(String message) {
			super(message);
			this.message = message;
		}

		public String getMessage() {
			return message;
		}
	}

	public static void main(String[] args) {
		ExceptionDemo demo = new ExceptionDemo();
		try {
			demo.openfile("c:/dir.txt");
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (MauvaisFormatException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}



;-)
HackTrack
6
choubaka Messages postés 39407 Date d'inscription jeudi 4 avril 2002 Statut Modérateur Dernière intervention 9 décembre 2024 2 104
25 juil. 2005 à 13:15
1