Skip to content
Related Articles

Related Articles

Improve Article

User Defined Exceptions using Constructors in Java

  • Last Updated : 28 Jan, 2021

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 

Attention reader! Don’t stop learning now. Get hold of all the important Java Foundation and Collections concepts with the Fundamentals of Java and Java Collections Course at a student-friendly price and become industry ready. To complete your preparation from learning a language to DS Algo and many more,  please refer Complete Interview Preparation Course.




My Personal Notes arrow_drop_up
Recommended Articles
Page :