在使用了显式throw关键字之后,为什么在多个catch语句的情况下另一个隐式throw不起作用



在这个程序中,MyclassEx是Exception(java.lang.Exception(的子类。我们创建用户定义的异常。在类中包含一个参数化构造函数,该构造函数将其参数传递给Exception类的超类。在这个类之外,我声明另一个类SimpleThrow.这里我接受两个变量x的输入,y是双类型的。Z是x的除数,y.如果我把y设为零,它应该抛出对catch(ArithmeticException e(块的控制。但除了用户定义的Exception(即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:debolinajavaError_handling>javac SimpleThrow.java
D:debolinajavaError_handling>java SimpleThrow       
Enter two numbers:45
0
yoo

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

最新更新