1. throws和throw关键字
(1).throws关键字:在定义一个方法的时候可以使用throws关键字声明,使用 throws声明的方法表示此方法不处理异常,而交给方法的调用处进行处理。
使用格式:
public 返回值类型 方法名称(参数列表。。。。)throws异常类{}
举例:
class Math{
public int div(int i,int j)throws Exception{//定义除法操作,如果有异常,交给调用处处理
int t = i/j;
return t;
}
}
以上程序报错,因为div方法使用了throws关键字声明,所以在调用此方法的时候,方法必须进行异常处理。
举例:
public class Exception3 {
public static void main(String[] args) {
Math m = new Math();
try{
System.out.println("除法操作:" + m.div(10, 2));
}catch (Exception e) {
e.printStackTrace();//打印异常
}
}
}
class Math{
public int div(int i,int j)throws Exception{//定义除法操作,如果有异常,交给调用处处理
int t = i/j;
return t;
}
}
运行结果:除法操作:5
如果现在在主方法的声明上也使用了throws关键字,可不可以呢?答案是可以。在主方法中的所有异常都可以不使用try...catch进行处理
举例:
public class Exception3 {
//在主方法中的所有异常都可以不使用try...catch进行处理
public static void main(String[] args)throws Exception {
Math m = new Math();
System.out.println( "除法操作:" + m.div(10, 2));
}
}
class Math{
public int div(int i,int j){
int t = i/j;
return t;
}
}
运行结果:除法操作:5
把以上主方法中输出改为System.out.println( "除法操作:" + m.div(10,0));
则抛出异常,在本程序中主方法不处理任何异常了,而是交给最大的头,java中最大的头是JVM,所以如果在主方法中使用throws关键字,则表示一切的异常交给了JVM进行处理,默认的处理方法也是使用JVM完成的。
(2) throw关键字
throws关键字的作用与throws关键字不同的是在程序中,可以直接使用throw抛出一个异常。抛出的时候直接抛出异常类的实例化对象即可。
举例:
public class Exception4 {
public static void main(String[] args) {
try{
throw new Exception("自己抛着玩");//抛出异常的实例化对象
}catch (Exception e) {
System.out.println(e);
}
}
}
运行结果:java.lang.Exception: 自己抛着玩
2.throw和throws,结合try..catch..finally应用
举例“:
public class Exception3 {
//在主方法中的所有异常都可以不使用try...catch进行处理
public static void main(String[] args) {
Math m = new Math();
try {
System.out.println( "除法操作:" + m.div(10, 0));
} catch (Exception e) {
System.out.println( "异常产生:" + e);
}
}
}
class Math{
public int div(int i,int j)throws Exception{
System.out.println("======计算开始======");
int temp = 0;
try {
temp = i/j;
} catch (Exception e) {
throw e;
}finally{
System.out.println("======计算结束======");
}
return temp;
}
}
运行结果:
======计算开始======
======计算结束======
异常产生:java.lang.ArithmeticException: / by zero