欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

异常

程序员文章站 2022-05-12 23:08:41
...

异常家族谱

异常

异常两种检查类型

异常(Exception)是可以在应用层面进行捕获或者抛出的。异常也根据检查的的强弱可以分为必须检查(Checked exception)和不必须检查(Unchecked exception)两种。
根据JVM对异常检查的阶段也分别称为编译时检查异常,运行时检查异常。

编译时检查异常:是Exception的子类,这种异常必须要求在编译的时候进行检查处理否则无法编译。

运行时异常:是RuntimeException的子类,这种异常无需在编译阶段检查,在程序运行的过程中再进行检查的。

异常如何处理?

对于异常有两种处理方式,一种捕获可能出现的异常代码块进行解决掉异常(try-catch-finally),第二种是在方法的声明处进行抛出该异常(throws)。

1.try-catch-finally

捕获异常,使用try-catch-finally代码块检查异常出现的代码块。在catch中给出解决方案来对程序进行“补救”或者结束掉它。finnaly中的内容无论异常与否,都将执行。
异常
异常
捕捉多个异常
异常
PS:捕获多个异常时,捕捉的有父子关系的,要先捕获子类,再捕获父类

2.throws

抛出异常,如果程序中无法确定如何处理该异常可以在方法声明出将其抛出给代码调用者让它来进行处理。程序的异常始终都要进行解决掉,最终抛出也只是会抛给你去进行处理,这是最糟糕的处理方式。
异常

自定义异常(API没有合适的异常)

1.自定义异常类继承exception类

异常

2.实现类throws自定义异常类

package test.judge;

public class LoginIn {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		String QQ = "990509820";// QQ号
		String password = "xxxxxxxx";// 密码
		try {
			boolean LoginResult = Login(QQ, password);
			// QQ合法,验证QQ与密码是否匹配
			if (LoginResult) {
				System.out.println("开始验证QQ号与密码是否匹配");
			}
		} catch (IllegalQqNumberException e) {
			// TODO Auto-generated catch block
			System.out.println("QQ号不合法");
		}
	}

	public static boolean Login(String QQ, String password) throws IllegalQqNumberException {
		/*
		 * 关于QQ号的正则表达式
		 */
		if (!QQ.matches("[1-9][0-9]{5,11}")) {
			throw new IllegalQqNumberException();
		} else {
			return true;
		}
	}
}

相关标签: exception