异常类

Throwable:是所有错误和异常的基类
异常类_第1张图片
所以,我们作为程序员,处理的异常一般都是运行时异常

=========================================================

异常处理方式:
一、捕获:try-catch(在方法体内)

		try {
			//可能发生异常的代码
		} catch (Exception e) {
			//针对异常出现后,要进行的操作
		}finally {
			//一定会执行的代码,一般是关闭流、数据库连接等
		}

注意事项:
1、子类异常在上面,父类异常在下面,平级异常顺序无所谓
2、不要用Exception处理全部,尽量细化异常处理方式,因为不同的异常可能要进行不同的处理

二、抛出:throws(在方法上)
向外再抛出给调用者(谁调用谁处理),为了给调用者(其他程序员)一个提示
语法:通过throws关键字,用在方法()后{}前,多个异常逗号隔开,顺序无所谓。

===============================================================

自定义异常:命名XxxException

问:为什么要自定义异常
因为项目中会有各种各样的场景和需求,所以就会有各种各样的异常,JDK不可能把所有情况的异常都写出来,所以根据实际业务需求来自定义异常

设计步骤:

  1. 设计一个XxxException 去继承 Exception 类
  2. 通过eclipse工具生成一个随机的序列化号 serialVersionUID
  3. 通过eclipse工具生成一个无参构造和一个String类型参数的构造
public class NameReapeatException extends Exception {
	/**
	 * 点击类名,选择第二个,就会自动生成序列化号
	 */
	private static final long serialVersionUID = -5844378185908159486L;

	/**
	*	alt+shift+s,选从超类生成构造函数
	*/
	public NameReapeatException() {
		super();
	}

	public NameReapeatException(String message) {
		super(message);
	}
	
}

使用方式:

		//使用try-catch捕获
		try {
			//可能发生异常的代码
		} catch (NameReapeatException e) {//直接把异常类名写这里
			//针对异常出现后,要进行的操作
		}catch (Exception e) {
			
		}finally {
			//一定会执行的代码,一般是关闭流、数据库连接等
		}


		//throw 
		//1、写在方法()后:throws  NameReapeatException
		//2、throw new 异常类名
		if (arr1 == null || arr2 == null) {
			//抛出异常,提醒调用者不能写空值
			throw new IllegalArgumentException("传入的数组为null!!!");
		}

============================================================

Java底层异常的运行和处理的机制:
异常类_第2张图片

你可能感兴趣的:(java学习,java,exception)