1、Throws
如果在当前方法不知道该如何处理该异常时,则可以使用throws对异常进行抛出给调用者处理或者交给JVM。调用者调用此方法,要么抛出要么try catch处理,到了JVM这里,就是打印出异常堆栈,并终止运行。换句话说,用这个有两种情况。
1>我 throws抛出异常,如果是检查异常,那么调用者必须捕获或再次抛出
2>我 throws抛出异常,如果是非检查异常或者没有直接调用的地方,都是可以交给jvm来处理
throws在使用时应处于方法签名之后使用,可以抛出多种异常并用英文字符逗号’,’隔开。
public void throwsTest() throws ExceptionClass1, ExceptionClass2 {...}
2、throw
如果需要程序在程序中自行抛出异常,应该使用throw语句抛出,抛出的不是一个类而是一个对象且只能抛出一个对象。它可以单独使用,也可以结合catch块捕获使用。如果抛出的异常对象时Checked异常则处于try块里被catch捕获或者放在一个带throws的方法里;如果抛出的是RuntimeException则既可以显示使用try…catch捕获也可以不理会它
public static void main(String[] args) {
throwRuntime(2);
try{
throwChecked(3);
}catch(Exception e) {
System.out.println(e.getMessage());
}
//throw的异常可以直接交给jvm
throwRuntime(-3);
throwFileNotFound(5);
}
//该方法内抛出一个Exception异常对象,必须捕获或抛给调用者
public static void throwChecked(int a) throws Exception {
if(a < 0) {
throw new Exception("a的值应大于0,不符合要求");
}
}
//该方法内抛出一个RuntimeException对象,可以不理会直接交给JVM处理,非checked异常可以不用try catch抛出
public static void throwRuntime(int a) {
if(a < 0) {
throw new RuntimeException("a的值应大于0,不符合要求");
}
}
//该方法内抛出一个FileNotFoundException对象,checked异常需要在try catch语句块中抛出,可以不理会直接交给JVM处理
public static void throwFileNotFound(int a) {
if(a < 0) {
try {
throw new FileNotFoundException("a的值应大于0,不符合要求");
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
}
更多可参考:https://blog.csdn.net/sdr_zd/article/details/75675004
本文系转载,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文系转载,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。