4.异常分类

一. 异常(Exception)的分类

  1. 编译时期的异常:checked异常,在编译时期,就会检查,如果没有处理异常则编译失败.
  2. 运行时期异常:runtime异常,在运行时期,检查异常,在编译时期,运行异常不会编译报器检测
    (不报错).运行异常:在编译时期:可处理,可不处理.

image

二. 返回错误结果throw

  1. 一般的,当一个方法出现不正常的情况的时候,我们不知道该方法应该返回一个什么,此时候
  2. 就返回一个错误,在catch语句块继续向上抛出异常.
    return 是返回一个值,throw是返回一个错误,返回给该方法的调用者.
    运用于方法内部,用于给调用者返回一个异常对象,和return一样会结束当前方法.

新建ThrowDemo.java

public class ThrowDemo {
	public static void main(String[] args) {
		try {
			int num = 10;
			int num1 = 5;
			System.out.println(throwDemo(num,num1));
		}catch(Exception e) {
			System.out.println(e.getMessage());
		}		
	}

	private static int throwDemo(int num, int num1) {
		if (num1 == 0) {
			throw new ArithmeticException("除数不能为零");
		}
		try {
			return num / num1;
		}catch(Exception e) {
			System.out.println("异常");
		}
		return 0;
	}
}

三. 声明抛出异常

  1. thows:运用于方法声明之上,用于表达当前方法处理异常,而是提醒该方法的调用者来处理异常(抛出异常)

  2. 如果每一个方法都放弃处理异常都直接通过throws声明抛出,最后异常会抛到main方法,如果此时main
    方法不处理,继续抛给JVM,底层的处理机制就是打印异常的跟踪栈信息.

  3. 方法的覆盖(Override):

    1. 一同:方法的签名必须相同.
    2. 两小:
      1. 子类方法返回类型和父类方法返回类型相同,或是其子类
      2. 子类方法不能声明抛出新的异常
    3. 一大:子类方法的访问权限必须大于等于父类方法的访问权限.

新建ThrowsDemo.java

public class ThrowsDemo {
	public static void main(String[] args) {
		int num = 10;
		int num1 = 0;
		try {
			System.out.println(throwsDemo(num,num1));
		}catch(Exception e) {
			e.printStackTrace();
		}

	}
	//表示在本方法中不处理某种类型的异常,提醒调用者需要来处理异常
	private static int throwsDemo(int num, int num1) throws Exception {
		if (num1 == 0) {
			throw new Exception("除数不能为零");
		}
		try {
			return num / num1;
		}catch(Exception e) {
			System.out.println("异常");
		}
		return 0;
	}
}
发布了58 篇原创文章 · 获赞 0 · 访问量 713

猜你喜欢

转载自blog.csdn.net/huang_kuh/article/details/105249931
今日推荐