Open In App

User Defined Exceptions using Constructors in Java

Improve
Improve
Like Article
Like
Save
Share
Report

In Java, we have already defined, exception classes such as ArithmeticException, NullPointerException etc. These exceptions are already set to trigger on pre-defined conditions such as when you divide a number by zero it triggers ArithmeticException.

In Java, we can create our own exception class and throw that exception using throw keyword. These exceptions are known as user-defined or custom exceptions.

Problem statement: Realize a Java class Matrix to represent bi-dimensional matrices of real numbers. The class should export the following methods:  

  • Matrix(int n, int m): Constructor that creates a matrix of size nxm, with all values initially set to 0; 
  • Matrix product(Matrix m): It returns the matrix that is the product of the object and of m, if the two matrices have compatible dimensions, and null otherwise; ExceptionWrongMatrixDimension that is thrown in the method check() if the dimension of the matrix is wrong for the multiplication of the matrix.

Example:

Java




// Java program to create user defined
// exceptions
  
import java.util.Scanner;
  
// User defined exception class to store the exception
// message
class ExceptionWrongMatrixDimension extends Exception {
  
    public ExceptionWrongMatrixDimension(String str)
    {
        // stores the exception message to be displayed
        super(str);
    }
}
  
class twoDimensionalMatrix {
  
    void Matrix(int n, int m)
        throws ExceptionWrongMatrixDimension
    {
        // initialize matrix to be processed
        int[][] matrix = { { 1, 2 },
                           {
                               4,
                               5,
                           } };
  
        System.out.println("\nMatrix is :");
  
        for (int i = 0; i < m; i++) {
            for (int j = 0; j < n; j++) {
                System.out.print(matrix[i][j] + " ");
            }
            System.out.println();
        }
  
        int rows = 2;
        int cols = 2;
  
        if (n != rows) {
  
            // throw keyword for an exception in a method
            throw new ExceptionWrongMatrixDimension(
                "Invalid matrix dimensions to multiply");
        }
        else {
            int[][] m_matrix = { { 6, 3 },
                                 {
                                     9,
                                     2,
                                 } };
  
            System.out.println("\nMatrix to multiply is :");
  
            for (int i = 0; i < rows; i++) {
                for (int j = 0; j < cols; j++) {
  
                    System.out.print(m_matrix[i][j] + " ");
                }
                System.out.println();
            }
  
            System.out.println("\nMatrix to multiply is :");
  
            for (int i = 0; i < rows; i++) {
                for (int j = 0; j < cols; j++) {
                    System.out.print(m_matrix[i][j] + " ");
                }
                System.out.println();
            }
  
            int c[][] = new int[m][n];
  
            for (int i = 0; i < rows; i++) {
                for (int j = 0; j < rows; j++) {
                    c[i][j] = 0;
                    for (int k = 0; k < rows; k++) {
                        c[i][j] += matrix[i][j]
                                   * m_matrix[k][j];
                    }
                }
            }
  
            System.out.println(
                "\n\nMatrix after multiplication is");
  
            for (int i = 0; i < rows; i++) {
                for (int j = 0; j < cols; j++) {
  
                    // prints the third matrix containing
                    // the multiplied values
                    System.out.print(c[i][j] + " ");
                }
                System.out.println();
            }
        }
    }
}
  
public class Main {
    public static void main(String args[])
    {
        twoDimensionalMatrix matrix
            = new twoDimensionalMatrix();
  
        try {
  
            // block of code to be tested for errors while
            // it is being executed.
            System.out.println("Enter the number of rows");
  
            int n = 2;
  
            System.out.println(
                "Enter the number of columns");
            int m = 2;
            matrix.Matrix(n, m);
        }
  
        catch (ExceptionWrongMatrixDimension e) {
  
            // block of code to be executed, if an error
            // occurs in the try block.
            System.out.println(
                "ExceptionWrongMatrixDimension:");
  
            // returns a method object. The name parameter
            // is passed as a string.
            System.out.println(e.getMessage());
        }
    }
}


Output

Enter the number of rows
Enter the number of columns

Matrix is :
1 2 
4 5 

Matrix to multiply is :
6 3 
9 2 

Matrix to multiply is :
6 3 
9 2 


Matrix after multiplication is
15 10 
60 25 


Last Updated : 28 Jan, 2021
Like Article
Save Article
Previous
Next
Share your thoughts in the comments
Similar Reads