-1

在这个程序中 MyclassEx 是 Exception(java.lang.Exception) 的子类。我们创建用户定义异常。在该类中包含一个参数化构造函数,该构造函数将其参数传递给超类,即 Exception 类。在这个类之外,我声明了另一个类 SimpleThrow .这里我输入两个变量x,y的double类型。Z是x,y的除数。如果我把y设为零,它应该把控制权交给catch(ArithmeticException e)block。但它不会抛出任何除了用户定义的异常即 MyclassEx 之外的 catch 块。如何使用 Myclass 异常使所有 catch 块处于活动状态?

import java.lang.Exception;
import java.util.*;
class MyclassEx extends Exception{
    MyclassEx(String msg)
    {
        super(msg);
        System.out.println(msg);
    }
}
public class SimpleThrow
{
    public static void main(String[] args)
    {
        
        try
        {
            double x=0,y=0,z=0;
            Scanner sc=new Scanner(System.in);
            System.out.print("Enter two numbers:");
            x=sc.nextDouble();
            y=sc.nextDouble();
            z=x/y;
                
                if(z<0.01)
                {
                    **throw new MyclassEx("Number is too small");**
                }  
        }
        catch(MyclassEx e)
        {
            System.out.println("caught exception");
                
        }
        catch(ArithmeticException obj)
        {
            System.out.println("division not possible BY 0");
        }
        catch(InputMismatchException e2)
        {
            System.out.println("you have entered wrong key:");
        }
        finally
        {
            System.out.println("yoo");
        }
    }
}
D:\debolina\java\Error_handling>javac SimpleThrow.java

D:\debolina\java\Error_handling>java SimpleThrow       
Enter two numbers:45
0
yoo
4

1 回答 1

0

如果 y 为 0,则 z 为 Double.POSITIVE_INFINITY 或 Double.NEGATIVE_INFINITY(取决于 x 符号)。不抛出异常。在您的示例中, z 是 Double.POSITIVE_INFINITY 大于 0.01,因此不会引发 MyClassEx 异常。

于 2022-01-15T21:27:35.557 回答