正则表达式
正则表达式是使用特定的符号来描述该字符串的一种方法。即:正则表达式就是一个字符串模板,其本身也是一个字符串。
正则表达式常用的代码
.
匹配换行符以外的任意字符
\w
可以匹配任意的数字或字母
\d
可以匹配任意的数字
\s
可以匹配任意的空格
^
代表字符串的开始
[\u4e00-\u9fa5]
匹配中文
$
代表字符串的结束
例子:
^\w{5}$
代表匹配的字符串要以数字和字母开始,或者以数字或字母结尾,必须匹配5个
^\w{3}\d{2}$
数字或字母开始三位,以数字结尾2位。
^\s{1,3}\d{2}$
1-3个空格开始2个数字结尾
正则表达式的量词:
\*
表示可以匹配0次或多次
\+
表示可以匹配一次或多次
?
可以匹配0次或者1次
{n}
只能匹配n次
{n,}
表示至少匹配n次
{n,m}
表示至少匹配n次,最多m次。
[ ]
表达可以从中间匹配任意的一个内容,也可以匹配多个。
分组:
()
包含起来的表达式,就是一个组,这个组可以统一量词
转义词:"\"
异常处理
概念
异常指的是在运行期间出现的错误,程序开始执行,出现了异常过后我们要关注异常的类型、异常出现的行号。
错误是指在程序运行过程中发生的一系列异常事件,如:下标越界、空指针、除数为0等。异常时java提供的用于处理程序错误的一种处理机制。
一旦发生异常时,使用异常处理机制会让程序不会直接中断或影响虚拟机的运行。
分类
1、Error
: (错误)jvm生成并抛出,错误一般有虚拟机错误、动态链接失败之类等,程序控制不了,用户也无法控制。jvm的运行问题
2、Exception
:用户的错误、程序无法预见的一些问题。所有异常的父类、提供了很多个子类,每个子类都对应着异常情况,一旦出现 Exception 这种异常,需要开发者自己去处理(捕获)。
3、RuntimeException
:运行时异常是程序在运行过程中发生的,可以被程序员避免的异常。如果不处理,抛出异常过后提醒开发者要关注此异常。
常见异常:
ClassNotFoundException
IOException
SQLException
NosuchFieldException
RuntimmException
- ClassCastException 类转换异常、
- NullPointException
- UnknowTypeException
- IndexOutOfBoundException
- ArtithmeticException 计算异常
执行流程
在方法执行过程中,方法压入到方法栈中,在某一方法中出现了运行时异常,如果没有处理这种异常,后面的内容将无法执行,当把异常抛给了虚拟机,就中断了虚拟机的继续执行。
结构体系
检查异常:编译器要求你必须要处理的异常,不处理程序无法运行。当你代码没有运行的时候,编译器就检查出来的问题
非检查异常:编译器不强制要求处理的异常。虽然可能出现问题,但是不要求你处理。(RuntimeException以及子类的异常)
基本用法
1、捕获异常
// 语法1
try {
// 运行过程中 可能会出现异常代码
}catch(Exception e) { // 声明父类异常接受异常
// 当出现异常执行的代码
}
// 语法2 捕获多个异常
try {
}catch() {
}catch() {
}
// 语法3
try {
}catch {
}finally { // finally 为异常提供了一个统一的出口,使得程序在跳转到另一个程序之前
// 能够对程序进行统一的管理
// 无论try模块的内容是否执行,finally代码都执行一次
// 通常在finally 里执行的内容是资源的关闭或日志的记录。
}
// 语法4
try {
}finally {
}
声明并抛出异常
在本方法中,如果出现了异常,本方法可以不进行处理,抛给调用者来处理,将异常一层一层的往外抛、在达到虚拟机之前处理好整个程序也不受影响。
throw
关键字: 将异常进行抛出 (动作)。
throws
关键字: 声明将要抛出何种类型的异常(声明)在方法名后声明。
重写方法时,子类和父类异常问题:
1、父类方法没有抛出异常,而子类重写方法时不能抛出异常。
2、父类抛出异常,子类重写方法可以抛出与父类同样的异常。
3、父类抛出异常,子类方法可以不抛出异常(不推荐)
4、父类抛出一个Exception,可以抛出比exception小的异常,子类异常不能抛出比父类大的异常
5、父类不能抛出比子类小的异常
6、子类异常要么跟父类样,要么是父类异常的子类。
自定义异常
优点:
在团队开发过程中,都是模块、分功能来进行开发,在项目中统一制定自己的异常,对外统一显示内容,有利于团队的统一分工合作。
1、所有的异常都应该是Throwable的子类。
2、写检查性的异常,需要写一个类继承Exception。
3、写运行时异常,需要继承RuntimeException。