这是一个超级简单的Java代码
public class Main {
public static void throwExample() {
throw new Exception(); // IntelliJ says that something's wrong here.
}
public static void main(String[] args) throws FileNotFoundException {
FileOutputStream fos = new FileOutputStream("aa.txt");
ByteArrayOutputStream baos = new ByteArrayOutputStream();
for(int i = 0; i < 10 ; i++) {
baos.write((byte) i);
}
System.out.println(Arrays.toString(baos.toByteArray()));
}
}
在我评论的第三行中,IntelliJ说这里有问题。所以我随机更改了代码,当我做下面的事情时,
public static void throwExample() // throws Exception
一切正常。
但是我看到很多例子 不带“ throws”的“ throw”关键字,例如
class Exception2{
static int sum(int num1, int num2){
if (num1 == 0)
throw new ArithmeticException("First parameter is not valid");
else
System.out.println("Both parameters are correct!!");
return num1+num2;
}
public static void main(String args[]){
int res=sum(0,12);
System.out.println(res);
System.out.println("Continue Next statements");
}
}
我的代码有什么问题?
答案 0 :(得分:3)
但是我看到很多使用'throw'关键字但没有'throws'的示例 一起
在Java中,有两种主要的例外类别
如果引发了检查的异常,则需要通过用try catch
块包围可能引发检查的异常的代码段或在方法签名中添加throws
关键字来捕获它。
另一方面,如果您的代码引发未经检查的异常,则不必捕获它。因此,java编译器不会抱怨您在第二个代码示例中未在方法签名中添加throws
关键字。
答案 1 :(得分:1)
Exception是一个CheckedException,它需要引发。所有异常都从RuntimeException继承,并且都是UncheckedException,不需要try / catch或throws。