java自定义异常以及throws和throw的区别

t首先看一下throws和throw的区别:

throws是用来声明一个方法可能抛出的所有异常信息

throw则是指抛出的一个具体的异常类型。

通常在一个方法(类)的声明处通过throws声明方法(类)可能抛出的异常信息,而在方法(类)内部通过throw声明一个具体的异常信息。

throws通常不用显示的捕获异常,可由系统自动将所有捕获的异常信息抛给上级方法;

throw则需要用户自己捕获相关的异常,而后在对其进行相关包装,最后在将包装后的异常信息抛出。

使用Java内置的异常类可以描述在编程时出现的大部分异常情况。除此之外,用户还可以自定义异常。用户自定义异常类,只需继承Exception类即可。

在程序中使用自定义异常类,大体可分为以下几个步骤。

(1)创建自定义异常类。

(2)在方法中通过throw关键字抛出异常对象。

(3)如果在当前抛出异常的方法中处理异常,可以使用try-catch语句捕获并处理;否则在方法的声明处通过throws关键字指明要抛出给方法调用者的异常,继续进行下一步操作。

(4)在出现异常方法的调用者中捕获并处理异常

例子程序:

package com.zcy.exception;

import java.util.*;

public class NewClass {
//用throws声明这个方法可能抛出的所有异常信息
static int avg(int number1, int number2) throws MyException {
if (number1 < 0 || number2 < 0) {
//用throw抛出一个具体的异常类型
throw new MyException("不可以使用负数");
}
if (number1 > 100 || number2 > 100) {
throw new MyException("数值太大了");
}
return (number1 + number2) / 2;
}

public static void main(String[] args) {
System.out.println("求2个数的平均数!" + "请输入两个数,要求是都小于100的数:");
Scanner in = new Scanner(System.in);
int number1 = in.nextInt();
int number2 = in.nextInt();
try {
int result = avg(number1, number2);
System.out.println(result);
} catch (MyException e) {
System.out.println(e);
}
System.out.println("是否继续执行。。。。");
/*

输出结果:
求2个数的平均数!请输入两个数,要求是都小于100的数:
200000
1
com.zcy.exception.MyException: 数值太大了
是否继续执行。。。。

*/
}


/*

public static void main(String[] args) throws MyException {
System.out.println("求2个数的平均数!" + "请输入两个数,要求是都小于100的数:");
Scanner in = new Scanner(System.in);
int number1 = in.nextInt();
int number2 = in.nextInt();
int result = avg(number1, number2);
System.out.println(result);
System.out.println("是否继续执行。。。。");
}
输入结果:
求2个数的平均数!请输入两个数,要求是都小于100的数:
200000
1
Exception in thread "main" com.zcy.exception.MyException: 数值太大了
at com.zcy.exception.NewClass.avg(NewClass.java:13)
at com.zcy.exception.NewClass.main(NewClass.java:36)

*/
}

//自定义一个异常类
class MyException extends Exception {
MyException(String ErrorMessage) {
super(ErrorMessage);
}
}

可以看出,当用try..catch捕获后,程序是还是可以继续往下执行的,而如果不适用的话,继续就会中断,抛出异常信息

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值