我是初学者,所以请不要使用硬或高级术语。 我尝试在方法中使用throws然后将其删除,并注意到如果我在调用方法时在main中处理它,它确实没有任何区别。
public Triangle(int side1, int side2, int side3) throws Exception{
if (side1 <= 0 || side2 <= 0 || side3 <= 0)
throw new IllegalArgumentException("Sides can only be positive numbers");
this.side1 = side1;
this.side2 = side2;
this.side3 = side3;}
public static void main (String args []) {
try {
Triangle obj = new Triangle (0,1,1) ;
}catch (Exception e) {
System.out.println("Caught");
}
我甚至尝试在方法中除以0而不使用throws,如果我在调用方法时使用try和catch,仍然能够在main中处理异常。
如果我想在其他地方处理异常(例如main方法),何时需要使用具有函数的throws?
答案 0 :(得分:0)
序幕:
例外有两种类型Unchecked
或RuntimeException
和Checked Exception
。检查RuntimeException
的子类的每个异常都是未选中的。除以零会生成未经检查的异常。找不到文件是一个经过检查的例外。
现在让我们深入探讨您的问题 - 如果您希望调用者处理它,方法应该声明抛出。约定不是处理RuntimeExceptions,因为可以通过更好的编程来避免它们。
同样是快速代码审查,避免使用throws Exception
,这告诉调用者您可以预期任何异常,而是指定调用者应该知道的确切异常或异常列表。
答案 1 :(得分:0)
Throws
来声明有问题的方法抛出特定的异常。与已检查的例外相反。
reference to throws