异常是由java应用程序抛出和处理的非严重错误,一般分为Checked异常和运行
时异常两大类.
Checked异常必须捕获或声明抛出,否则无法通过编译,
运行时异常不要求必须捕获或声明抛出.
Java的异常处理是通过下面五个关键字来实现的:
Try,catch,finally,throw和throws
Try-catch块:
把可能出现异常的代码放入try语句块中,catch块中捕获异常.
package 异常定义;
public class yichang {
public void show() {
try {
//代码块
} catch (Exception e) {
e.printStackTrace();
}
}
}
Try-catch-finally块:
把可能出现异常的代码放入try语句块中,catch块中捕获异常,
不管异常会不会出现,finally块中的代码都会执行.
package 异常定义;
public class yichang {
public void show() {
try {
//代码块
} catch (Exception e) {
e.printStackTrace();
}finally{
//必定执行的代码
}
}
}
多重catch块:
分别处理不同异常,排序顺序必须是从特殊到一般.
package 异常定义;
public class yichang {
public void show() {
try {
// 代码块
} catch (NullPointerException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
}
Throws:
声明异常.
package 异常定义;
public class yichang {
public static void show() {
try {
// 代码块
} catch (NullPointerException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) throws Exception{
show();
}
}
Throw:
把异常抛给调用的地方.
package 异常定义;
public class yichang {
public static void show(int a) throws Exception {
if (a>50) {
System.out.println("数字大于50!");
}else {
throw new Exception();
}
}
public static void main(String[] args) throws Exception{
show(20);
}
}
Throw和Throws的区别:
作用:Throw用于在程序中抛出异常;Throws用于声明在该方法内抛出异常.
使用的位置不同:Throw位于方法体内部,可以作为单独语句使用;Throws必须跟在
方法参数列表的后面,不能单独使用.
内容不同:Throw抛出一个异常对象,而且只能是一个;Throws后面跟异常类,而且可以
跟多个异常类.
常见异常类型:
异常 |
说明 |
Exception |
异常层次结构的跟类 |
ArithmeticException |
算数错误情形,如以零作除数 |
ArrayIndexOutOfBoundsException |
数组下标越界 |
NullPointerException |
尝试访问null对象成员 |
ClassNotFoundException |
不能加载所需的类 |
InputMismatchException |
欲得到的数据类型与实际输入的类型不匹配 |
IllegalArgumentException |
方法接受到非法参数 |
ClassCastException |
对象强制类型转换出错 |
NumberFormatException |
数字格式转换异常,如把“abc”转换数字 |
Log4j使用步骤:
1. 在项目中加入log4j所使用的JAR文件.
2. 创建log4j.properties文件.
3. 编写log4j.properties文件,配置日志信息.
4. 在程序中使用log4j记录日志信息.
日志分类:
1. SQL日志: 记录系统执行的SQL语句.
2. 异常日志: 记录系统运行中发生的异常事件.
3. 业务日志: 记录系统运行过程,如用户登录,操作记录.