1.粗浅来说
throw是一个语句抛出异常,throws是一个方法抛出异常;
throw不是和try-catch-finally配套使用就是和throws配套使用,而throws可以单独使用。
2.例子
2.1系统自动抛出的异常
比如:
package cn.nuist.pers.October8;
public class ThrowThrows {
public static void main(String[] args) {
int a = 2,b = 0;
System.out.println(a/b);
}
}
此时系统会自动抛出:
Exception in thread "main" java.lang.ArithmeticException: / by zero
at cn.nuist.pers.October8.ThrowThrows.main(ThrowThrows.java:7)
2.2throw
如:
package cn.nuist.pers.October8;
public class ThrowThrows {
public static void main(String[] args) {
// int a = 2,b = 0;
// System.out.println(a/b); 系统自动抛出异常
String s = "abc";
if(s.equals("abc")) {
throw new NumberFormatException();
}
else {
System.out.println(s);
}
}
}
throw:
Exception in thread "main" java.lang.NumberFormatException
at cn.nuist.pers.October8.ThrowThrows.main(ThrowThrows.java:11)
2.3throws
如:
package cn.nuist.pers.October8;
public class ThrowThrows {
public static void function() throws NumberFormatException {
String s = "abc";
System.out.println(Float.parseFloat(s));
}
public static void main(String[] args) {
try {
function();
} catch (NumberFormatException e) {
// TODO: handle exception
System.out.println("哒哒哒!");
}
}
}
throws:
哒哒哒!