fork download
  1. class Calculator {
  2. public int divide(int a, int b) {
  3. return a / b; // may throw ArithmeticException
  4. }
  5. public int convert(String s) {
  6. return Integer.parseInt(s); // may throw NumberFormatException
  7. }
  8. }
  9.  
  10. public class ComplexExceptionDemo {
  11. public static void main(String[] args) {
  12. System.out.println("=== Program Start ===");
  13. Calculator calc = new Calculator();
  14. try {
  15. System.out.println("Inside try block...");
  16.  
  17. int num1 = calc.convert("10"); // valid → 10
  18. int result1 = calc.divide(100, num1); // 100/10 = 10
  19. System.out.println("Result1: " + result1);
  20.  
  21. int num2 = calc.convert("0"); // valid → 0
  22. int result2 = calc.divide(100, num2); // 100/0 → ArithmeticException
  23. System.out.println("Result2: " + result2);
  24.  
  25. int num3 = calc.convert("abc"); // won’t execute
  26. int result3 = calc.divide(50, num3);
  27. System.out.println("Result3: " + result3);
  28.  
  29. } catch (ArithmeticException e) {
  30. System.out.println("Caught ArithmeticException: " + e);
  31. } catch (NumberFormatException e) {
  32. System.out.println("Caught NumberFormatException: " + e);
  33. } finally {
  34. System.out.println("Finally block always runs.");
  35. }
  36. System.out.println("=== Program End ===");
  37. }
  38. }
Success #stdin #stdout 0.03s 26060KB
stdin
Standard input is empty
stdout
class Calculator {
    public int divide(int a, int b) {
        return a / b; // may throw ArithmeticException
    }
    public int convert(String s) {
        return Integer.parseInt(s); // may throw NumberFormatException
    }
}

public class ComplexExceptionDemo {
    public static void main(String[] args) {
        System.out.println("=== Program Start ===");
        Calculator calc = new Calculator();
        try {
            System.out.println("Inside try block...");

            int num1 = calc.convert("10");     // valid → 10
            int result1 = calc.divide(100, num1); // 100/10 = 10
            System.out.println("Result1: " + result1);

            int num2 = calc.convert("0");     // valid → 0
            int result2 = calc.divide(100, num2); // 100/0 → ArithmeticException
            System.out.println("Result2: " + result2);

            int num3 = calc.convert("abc");   // won’t execute
            int result3 = calc.divide(50, num3);
            System.out.println("Result3: " + result3);

        } catch (ArithmeticException e) {
            System.out.println("Caught ArithmeticException: " + e);
        } catch (NumberFormatException e) {
            System.out.println("Caught NumberFormatException: " + e);
        } finally {
            System.out.println("Finally block always runs.");
        }
        System.out.println("=== Program End ===");
    }
}