Java中异常的分类,主要分为两大类型
1. 系统自动抛出的异常
所有系统定义的编译和运行异常都可以由系统自动抛出,称为标准异常,并且 Java 强烈地要求应用程序进行完整的异常处理,给用户友好的提示,或者修正后使程序继续执行。
2. 语句抛出的异常
用户程序自定义的异常和应用程序特定的异常,必须借助于 throws 和 throw 语句来定义抛出异常。
那么throws和throw是如何进行使用,抛出异常的呢?
throws 是方法可能抛出异常的声明。(用在声明方法时,表示该方法可能要抛出异常) 调用者必须做出处理(捕获或继续抛出)。
用法:(修饰符)(返回值类型)(方法名)(参数列表)(throws(异常类){......}
示例:public void method(int parameter) throws Exception1,Exception2,Exception3{......}
throw代表语句抛出一个异常。
语法:throw(异常对象)
示例:throw new Exception1();
下面总结一下,throws和throw的具体区别:
代码示例:
package exceptions;
import java.util.Random;
class Exception1 extends Exception{
}
class Exception2 extends Exception{
}
public class InheritingExceptions {
public void f(int para) throws Exception1, Exception2 {
System.out.println(para);
if (1 == para) {
System.out.println("Throw Exception1 from f()");
throw new Exception1();
}
if( 2 == para) {
System.out.println("Throw Exception2 from f()");
throw new Exception2();
}
}
public static void main(String[] args) {
InheritingExceptions sed = new InheritingExceptions();
try {
sed.f(new Random(47).nextInt(3));
}catch (Exception1 e) {
// TODO: handle exception
System.out.println("Caught Exception1!");
}
catch (Exception2 e) {
// TODO: handle exception
System.out.println("Caught Exception2!");
}
}
}
程序运行结果为:
2
Throw Exception2 from f()
Caught Exception2!
代码块可能产生两个异常,Exception1, Exception2。这两种异常均由方法的调用者进行处理。