Dart - Types of Exceptions - GeeksforGeeks

23 Feb, 2021
Exception is a runtime unwanted event that disrupts the flow of code execution. It can be occurred because of a programmer’s mistake or by wrong user input. To handle such events at runtime is called Exception Handling. For example:- when we try to access the elements from the empty list. Dart Exceptions are the run-time error. It is raised when the program gets execution.  
The below table has a listing of principal dart exceptions.
Every built-in exception in Drat comes under a pre-defined class named Exception. To prevent the program from exception we make use of try/on/catch blocks in Dart.
try { 
   // program that might throw an exception 
}  
on Exception1 { 
   // code for handling exception 1
}  
catch Exception2 { 
   // code for handling exception 2
}
Try: In the try block, we write the logical code that can produce the exceptionCatch: Catch block is written with try block to catch the general exceptions: In other words, if it is not clear what kind of exception will be produced. Catch block is used.On: On the block is used when it is 100% sure what kind of exception will be thrown.Finally: The final part is always executed, but it is not mandatory.
Try: In the try block, we write the logical code that can produce the exception
Catch: Catch block is written with try block to catch the general exceptions: In other words, if it is not clear what kind of exception will be produced. Catch block is used.
On: On the block is used when it is 100% sure what kind of exception will be thrown.
Finally: The final part is always executed, but it is not mandatory.
Example 1: Using a try-on block in the dart. 
Dart
// importing dart:io file import 'dart:io';   void main() {     String geek = "GeeksForGeeks";     try{         var geek2 = geek ~/ 0;         print(geek2);     }     on FormatException{         print("Error!! \nCan't act as input is not an integer.");     } }
Output:
Error!! 
Can't act as input is not an integer.
Explanation:
In the above code, we declared two-variable geek and geek2 in the main () function. We wrote the suspect code in try block divided the x by the 0 that might be thrown an exception. The try block found the error the control transferred to the block that has the code to handle the error. By using this, the program did not stop its execution.
Example 2: Using a try-catch block in the dart. 
Dart
void main() {     String geek = "GeeksForGeeks";         try{             var geek2 = geek ~/ 0;             print(geek2);         }            // It returns the built-in exception        // related to the occurring exception          catch(e){             print(e);         } }
Output:
Class 'String' has no instance method '~/'.
NoSuchMethodError: method not found: '~/'
Receiver: "GeeksForGeeks"
Arguments: [0]
Example 3: Using an on...catch block in the dart.
Dart
void main() {     String geek = "GeeksForGeeks";     try{         var geek2 = geek ~/ 0;         print(geek2);     }     on FormatException catch(e) {           print("Error!! \nCan't act as input is not an integer.");     } }
Output:
FormatException
 The final block in dart is used to include specific code that must be executed irrespective of error in the code. Although it is optional to include the finally block if you include it then it should be after try and catch block are over.
Syntax:
try {   
  .....  
}    
on Exception1 { 
  ....  
}    
catch Exception2 {  
  ....
}    
finally {   
   // code that should always execute; whether exception or not.  
}  
Example:
Dart
void main() {     String geek = "GeeksForGeeks";     try{         var geek2 = geek ~/ 0;         print(geek2);     }     on FormatException{         print("Error!! \nCan't act as input is not an integer.");     }       finally {         print("Code is at end, Geek");       }         }
Output:
Error!! 
Can't act as input is not an integer.
Code is at end, Geek
The throw keyword is used to explicitly raise an exception. Dart provides many built-in exception classes which you can throw manually.
Syntax: throw new Exception_name()  
Example:
Dart
void main() {      try {         geek(-5);      }      catch(e) {         print('The marks cannot be negative');      }   }    void geek(int div2) {      if(div2<0) {         throw new FormatException();  // Raising explanation externally     }   }  
Output:
The marks cannot be negative
In the above program, we have wrapped geek(-5) statement in try block because it can throw an exception.
Every exception class inherits from the Exception class. Dart enables creating custom exceptions by extending the existing ones.
Syntax: class Custom_exception_Name implements Exception { }   
Example: Creating custom exceptions in the dart. 
Dart
// extending Class Age // with Exception class class Age implements Exception { String error() => 'Geek, your age is less than 18 '; }   void main() { int geek_age1 = 20; int geek_age2 = 10;       try{         // Checking Age and     // calling if the     // exception occur     check(geek_age1);     check(geek_age2); } catch(e){         // Printing error     print(e.error()); } }   // Checking Age void check(int age){ if(age < 18){     throw new Age(); } else{     print("You are eligible to visit GeeksForGeeks "); } }
Output:
You are eligible to visit GeeksForGeeks
Geek, your age is less than 18 
In the above example, we created a custom exception, Age. The code raised the exception if the entered amount is not within the excepted range, and we enclosed the function invocation in the try...catch block. 
Dart-Exception-Handling
Picked
Dart
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Comments
Old Comments
Flutter - Custom Bottom Navigation Bar
Flutter - Flexible Widget
ListView Class in Flutter
Flutter - Stack Widget
Android Studio Setup for Flutter Development
Format Dates in Flutter
Flutter - Positioned Widget
Simple Calculator App using Flutter
Flutter - Dialogs
Flutter - Managing the MediaQuery Object