为什么可以';在方法中抛出异常(Java)
我是Java新手,在抛出异常方面遇到了一些问题。也就是说,为什么这是不正确的为什么可以';在方法中抛出异常(Java),java,exception,try-catch,block,throw,Java,Exception,Try Catch,Block,Throw,我是Java新手,在抛出异常方面遇到了一些问题。也就是说,为什么这是不正确的 public static void divide(double x, double y){ if(y == 0){ throw new Exception("Cannot divide by zero."); //Generates error message that states the exception type is unhanded } else System.
public static void divide(double x, double y){
if(y == 0){
throw new Exception("Cannot divide by zero.");
//Generates error message that states the exception type is unhanded
}
else
System.out.println(x + " divided by " + y + " is " + x/y);
//other code follows
}
但是这个可以吗
public static void divide(double x, double y){
if(y == 0)
throw new ArithmeticException("Cannot divide by zero.");
else
System.out.println(x + " divided by " + y + " is " + x/y);
//other code follows
}
对于未检查的异常,您需要在方法签名中添加一个
抛出
,仅
public static void divide(double x, double y) throws Exception {
...
}
因为,在第二个示例中不需要抛出
更多信息:
运行时异常
,因此它不需要在throws
子句中声明,也不需要被catch
块捕获。但是Exception
不是RuntimeException
包括:
未检查的异常类(§11.1.1)免于编译时检查
“未检查的异常类”包括Error
s和RuntimeException
s
此外,您还需要检查
y
是否为0
,而不是x/y
是否为0
在Java中引发异常的方法必须在方法签名中删除它
publicstaticvoiddivide(双x,双y)抛出异常
如果没有声明,代码将无法编译
有一个特殊的异常子集扩展了RuntimeException
类。这些异常不需要在方法签名中声明
算术异常
扩展了一个运行时异常
责怪一个叫Goodeough的家伙,ca 1974。我想在设置对象进行序列化时生成一个NotSerializableException-通过检查如果(someObj instanceof Serializable)
这是不可能的吗?