104 votes

Comment créer une exception personnalisée et la gérer en dart

J'ai écrit ce code pour tester le fonctionnement des exceptions personnalisées en Dart.

Je n'obtiens pas la sortie désirée, quelqu'un pourrait-il m'expliquer comment le gérer??

void main() 
{   
  try
  {
    throwException();
  }
  on customException
  {
    print("une exception personnalisée a été obtenue");
  }

}

throwException()
{
  throw new customException('Ceci est ma première exception personnalisée');
}

180voto

Alexandre Ardhuin Points 16297

Vous pouvez consulter la partie Exception de Une visite du langage Dart.

Le code suivant fonctionne comme prévu (une exception personnalisée a été obtenue s'affiche dans la console) :

class CustomException implements Exception {
  String cause;
  CustomException(this.cause);
}

void main() {
  try {
    throwException();
  } on CustomException {
    print("une exception personnalisée a été obtenue");
  }
}

throwException() {
  throw new CustomException('Ceci est ma première exception personnalisée');
}

55voto

Mehdico Points 142

Si vous n'avez pas besoin d'être spécifique sur le problème, vous pouvez jeter une question générale comme celle-ci :

throw ("C'est ma première exception générale");

Cependant, il est préférable d'utiliser des erreurs spécifiques lorsque cela est possible. Elles vous informent davantage sur ce qui s'est mal passé pour que vous puissiez trouver comment le corriger.

6voto

Guillem Points 31

Vous pouvez également créer une exception abstraite.

Inspiration tirée de TimeoutException du package async (lire le code sur Dart API et Dart SDK).

abstract class IMoviesRepoException implements Exception {
  const IMoviesRepoException([this.message]);

  final String? message;

  @override
  String toString() {
    String result = 'IMoviesRepoExceptionl';
    if (message is String) return '$result: $message';
    return result;
  }
}

class TmdbMoviesRepoException extends IMoviesRepoException {
  const TmdbMoviesRepoException([String? message]) : super(message);
}

2voto

Saboor Khan Points 1

Essayez cet exemple simple d'exception personnalisée pour les débutants

class WithdrawException implements Exception{
  String wdExpMsg()=> 'Oops! quelque chose s'est mal passé';
}

void main() {   
   try {   
      withdrawAmt(400);
   }   
  on WithdrawException{
    WithdrawException we=WithdrawException();
    print(we.wdExpMsg());
  }
  finally{
    print('Le retrait d'un montant inférieur à 500 n'est pas autorisé');
  }
}

void withdrawAmt(int amt) {   
   if (amt <= 499) {   
      throw WithdrawException();   
   }else{
     print('Collectez votre montant=$amt du distributeur automatique de billets...');
   }   
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X