飞道的博客

新手小白学JAVA 异常

205人阅读  评论(0)

异常

1 概述

异常是一些用来封装错误信息的对象
它由异常的类型、提示信息、报错的行号提示三部分组成

2 异常的继承结构

3 异常的处理方式

当程序中遇到了异常,通常有两种处理方式:捕获或者向上抛出
当一个方法抛出异常,调用位置可以不做处理继续向上抛出,也可以捕获处理异常
大家可以结合生活中的例子:如果工作中遇到了问题,我们可以选择自己处理(捕获),或者交给上级处理(抛出)

捕获方式:

抛出方式:

在可能会会发生异常的方法上添加代码:
throws 异常类型
例如:public static void main(String[] args) throws Exception{ }

4 练习:异常测试

创建包: cn.tedu.exception
创建类: ExceptionDemo.java

package cn.tedu.exception;

import java.util.InputMismatchException;
import java.util.Scanner;

/**本类用于测试异常的入门案例*/
/**
 * 总结8:
 * 如果方法抛出异常,那么谁调用,谁需要解决(继续抛出/捕获解决)
 * 所以main()调用了method2(),如果main()不捕获处理,就也需要抛出异常
 * 注意:我们一般在main()调用之前捕获解决异常,而不是把问题抛给main()
 * 因为没人解决了
 * */
public class ExceptionDemo {
   
	//1.创建入口函数main()
	public static void main(String[] args) throws Exception {
   
		//method();//调用method()--暴露异常
		//method1();//调用method1()--异常捕获
		method2();//调用method2()--异常抛出
	}

	//4.创建method2(),练习BUG解决方案二
	/**抛出的语法规则:
	 * 在可能会出现异常的方法上加 throws 异常类型
	 * 在抛出时,也可以使用多态,不管是发生了什么异常,通通被Exception抛出去
	 * */
	//	public static void method2() throws InputMismatchException
	//	,ArithmeticException,Exception{
   
	public static void method2() throws Exception{
   
		//4.复写刚刚可能会发生异常的代码
		System.out.println("请输入您要计算的第一个数:");
		int a = new Scanner(System.in).nextInt();
		System.out.println("请输入您要计算的第二个数:");
		int b = new Scanner(System.in).nextInt();
		System.out.println( a / b );
	}

	/**捕获的语法规则:
	 * try{
	 * 		可能会出现异常的代码
	 * }catch(异常类型 异常参数名){
	 * 		如果捕获到异常的对应解决方案
	 * }
	 * */
	//3.创建method1(),练习BUG解决方案一
	public static void method1() {
   //11:15继续~,代码已上传至code网站
		//3.1按照学习的捕获语法编写try-catch结构
		/**总结4:try中放着的是可能会出现异常的代码*/
		try {
   
			//3.2复写刚刚可能会发生异常的代码
			System.out.println("请输入您要计算的第一个数:");
			int a = new Scanner(System.in).nextInt();
			System.out.println("请输入您要计算的第二个数:");
			int b = new Scanner(System.in).nextInt();
			System.out.println( a / b );
			/**总结5:如果发生异常被捕获,就执行此处被匹配到的解决方案*/
		}catch(InputMismatchException e) {
   //3.3异常捕获1
			System.out.println("输入的类型不正确,请输入正确的整数类型");
			/**总结6:由于程序中可能出现多种异常,所以catch可以配合多次使用*/
		}catch(ArithmeticException e) {
   //3.4异常捕获2
			System.out.println("除数不能为0!!");
			/**总结7:如果还有上述两种异常之外的异常,用Exception匹配捕获
			 * 这个就是多态最为经典的一种用法,我们不关心子类的子类
			 * 只要是可解决的异常,都是Exception的子类,多态会把这些异常当做父类型来看
			 * 进而捕获,使用通用异常解决方案来解决
			 * */
		}catch(Exception e) {
   
			System.out.println("请输入正确的整数~");
		}
	}

	//2.创建method()用来人为的暴露异常
	public static void method() {
   
		//2.1提示并接收用户输入的两个整数
		System.out.println("请输入您要计算的第一个数:");
		int a = new Scanner(System.in).nextInt();
		System.out.println("请输入您要计算的第二个数:");
		int b = new Scanner(System.in).nextInt();

		//2.2 输出除法运算的结果
		//输入8和2.2,报错:InputMismatchException[输入不匹配异常]
		//输入9和0,报错:ArithmeticException: / by zero[算数异常,除数不能为0]
		System.out.println( a / b );
		/**1.不要害怕BUG,真正的勇士敢于直面自己写的BUG*/
		/**2.学会看报错信息的错误提示,确定自己错误的方向*/
		/**3.学会看报错信息的行号提示,哪里报错点哪里
		 * 源码不会错,要看的是自己写的代码*/
	}
}

快捷键小补充:
Ctrl + Shift + T :在eclipse当中查找你想找到的类
Ctrl + T : 查看类的继承结构
Ctrl + O : 查看类的结构信息(大纲)


转载:https://blog.csdn.net/weixin_43884234/article/details/116639280
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场