异常
程序员文章站
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;
}
}
}
上一篇: 如何发个 微信九宫格 朋友圈?
下一篇: Java Exception的日志输出
推荐阅读
-
请问个zend_framework相关的有关问题:登录时出现这样的异常:The supplied parameters to Zend_Auth_Adapter_D
-
Oracle--plsql异常处理
-
如何用 TP5、thinkPHP5.1 框架 接口开发 异常时返回json,validata 路由验证 失败后返回json(框架默认的是 debug返回异常页面 非debug返回空页面)
-
在关闭Word2007时出现异常,提示错误为appcrash
-
非常全面的Java异常处理(全文干货,值得收藏)
-
requests 处理异常错误 requests.exceptions.ConnectionError HTTPSConnectionPool [Errno 10060]
-
Word2003文档中出现的异常字符处理方法
-
应用程序发生异常 unknown software exception的解决方法
-
解决spring @ControllerAdvice处理异常无法正确匹配自定义异常
-
电脑开机出现异常提示keyboard not found的故障原因及解决方法