Java 基础学习之异常 二 (throws 和 throw 关键字)

1 throws 关键字

   在定义一个方法的时候使用 throws 关键之声明,使用 throws 声明的方法表示此方法不处理异常,而交给方法的调用处进行处理。使用格式如下:

public 返回值类型 方法名称(参数列表...throws 异常类{   }
实例 1 代码:
package self.learn.exception;

public class Math {
	public int div(int i, int j) throws Exception{
		int temp = i/j;
		return temp;
	}

	public static void main(String[] args) {
		Math math = new Math();
		try {
			System.out.println("除法操作:"+math.div(10, 2)); // 因为有 throws,不管是否有异常,都必须处理
		} catch (Exception e) {
			e.printStackTrace();          // 打印异常
		}
	}
}
运行结果截图:

异常处理
   上面的代码在方法处使用了 throws 关键字,所以不管是否有问题都要使用 try…catch 块进行异常的捕获处理。

2 throw 关键字

   与 throws 不同的是,可以直接使用 throw 关键字抛出一个异常。抛出时直接抛出异常类的实例化对象即可。

实例 2 代码:
package self.learn.exception;

public class Exception01 {

	public static void main(String[] args) {		
		try {
			throw new Exception("自己抛出的异常!");     //抛出异常的实例化对象
		}catch (Exception e) {                       // 捕获异常
			System.out.println(e);        
		}
	}
}
运行结果截图:

在这里插入图片描述

提问:为什么要有 throw 关键字 ?
回答: 抛出自己的异常。
   实际上 Java 中的异常都是使用 throw 抛出的,只不过这部分代码已经被 Java 隐藏起来。虽然 Java 本身可以自己抛出异常,但是很多时候如果用户定义了自己的异常类型,那么系统肯定是无法抛出的,这个时候只能借助于 throw 抛出异常。

3 范例:throw 与 throws 的应用

package self.learn.exception;

public class Math {
	public int div(int i, int j) throws Exception{       // 方法可以不处理异常
		System.out.println("*******计算开始*******");
		int temp = 0;                                   //声明整型变量
		try {
			temp = i/j;                                 // 如果产生异常,则执行 catch
		} catch (Exception e) {                         // 捕获异常
			throw e;                                    // 把异常交给被调用处处理
		}finally {
			System.out.println("*******计算开始*******");
		}
		return temp;
	}

	public static void main(String[] args) {
		Math math = new Math();
		try {
			System.out.println("除法操作:"+math.div(10, 0)); // 因为有 throws,不管是否有异常,都必须处理
		} catch (Exception e) {
			System.out.println("异常产生:"+e);
			e.printStackTrace();          // 打印异常
		}
	}
}
运行结果截图:

在这里插入图片描述

finally 语句编写的要求
finally 作为异常的统一出口,所以此语句块在编写中尽可能不要出现像 throw 或 return 这样的语句,这样可以避免不必要的问题出现。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值