异常是由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. 业务日志: 记录系统运行过程,如用户登录,操作记录.
