声明异常,抛出异常,异常的简单总结


如果在一个方法体中抛出了异常,如何通知调用者?

声明异常

方法有两种:
方法1:调用者处理异常:通常在方法后面加throws Exception
在这里插入图片描述
方法2:调用者继续声明异常(下一个接收的人在处理)

 public static void main(String[] args) throws Exception {
 //divide()方法抛出的异常
		 divide();
	}
}

自定义异常

除了系统自动抛出异常外,有些问题需要程序员自行抛出异常 (通过throw抛出异常)

public class Person {
	private String name = "";   // 姓名
	private int age = 0;   // 年龄
	private String sex = "男";  // 性别
	public void setSex(String sex) throws Exception {
		if ("男".equals(sex) || "女".equals(sex))
			this.sex = sex;
			else {
			//自定义抛出异常
			throw new Exception(“性别必须是”男”或者”女”!");
		}
	}
}

实例:选择课程;提示选择课程代号1~3;要是输入的不是数字就会输出系统异常;要是输入的不是1 ~ 3的数字就会输出自定义的异常。

public class classP {
public static void main(String[] args) {
 Scanner input= new Scanner(System.in);
 System.out.println("输入课程代号(1到3之间的数组)");
 try {
	 int i =input.nextInt();
   //匹配输出的i
	 switch (i) {
	case 1:
		System.out.println("c#编程");
		break;
	case 2:
		System.out.println("java编程");
		break;
	case 3:
		System.out.println("C语言");
		break;	
	default:
 //自定义抛出异常:输入的数不在1~3之间时抛出
	    throw new Exception("请输入1到3之间的数"); 
	}
} catch (Exception e) {
	//出现异常时,追踪显示异常的位置和信息
	e.printStackTrace();
 //getMessage()方法输出的是printStackTrace()方法的一部分
//System.err.println(e.getMessage());
}finally {
//finally方法体中的代码一定会输出
	System.out.println("程序结束了。");
}
}
} 

正确结果为:
在这里插入图片描述
错误结果1:输入的不是数字
在这里插入图片描述
程序中的e.printStackTrace();追踪显示出错的地方还显示了错在第几行。

错误结果2:输入的不是在1~3之间的数字,抛出的就是自定义的异常。
在这里插入图片描述

若是有多种类型的异常匹配,则异常匹配的顺序

  1. 排列catch 语句的顺序:先子类后父类
  2. 发生异常时按顺序逐个匹配
  3. 只执行第一个与异常类型匹配的catch语句
    代码形式:
public void method(){
try {
     // 代码段
     // 产生异常(异常类型2)
} catch (异常类型1 ex) {
     // 对异常进行处理的代码段
} catch (异常类型2 ex) {
     // 对异常进行处理的代码段
} catch (异常类型3 ex) {
     // 对异常进行处理的代码段
}
// 代码段
}

图形显示:
在这里插入图片描述

总结:

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值