异常
1,什么是异常
生活中上班中发生撞车。
异常就是在程序中运行的过程中,所发生的不正当的事,如文件找不到,网络连接不通,或者中断,数组下标越界等,不正常的事。
1.1 什么是异常的处理?
异常处理机制就是在平时可能遇到的意外情况,预先想好了,一些处理的方法。
Java中的异常处理机制,是通过五个关键字来实现的:try,catch,finally,throw,和throws。
1.2 try - catch 块
示例:
public class Test{ public static void main(String [] args){ Scanner in=new Scanner(System.in); System.out.print("请输入被除数"); int num1 =in.nextInt(); System.out.print("请输入除数"); int num2=in.nextInt(); System.out.println(String.Format("%d/%d=%d",+"除数不能为0")); e.printStackTrace(); } }
try - catch 程序块的执行流程比较简单,首先执行的是 try 块中的语句,这时可能会有以下三种情况:
1.如果try - catch块中的语句正常执行完毕,不会发生异常,那么catch 块中的所有语句都会被忽略。
当我们在控制台输入两个整数时,示例中的try 与语句中代码将会正常执行,不会执行catch语句中的代码,运行结果如图所示:
如果try - catch 块在执行的过程中出现了异常,并且与catch 块中声明的异常类型相匹配,那么在try 块中其余剩下的代码就会被忽略。
而相应的代码块会被执行,匹配是指catch处理的异常类型所生成的异常类型完全一致的或者是他的父类。
当在控制台提示输入除数时输入了 “B” ,示例中try - catch 块中的代码,int num1=in.nextInt(); 将抛出的InputMismatchExcepetion异常。
由于InputMismatchExpetion是Excepetion的子类,程序将忽略其余剩下的代码去执行catch语句块。运行结果如下:
常见的异常类型如下表:
异常 说明
Exception 异常层次结构的根类
ArithmeticException 算数错误情形,如以0作为除数
ArrayIndexOutOfBoundsException 数组下标越界
NullPointerException 尝试访问Null对象成员
ClassNotFoundException 不能加载所需的类
InputMismatchException 欲得到的数据类型与实际输入的类型不匹配
illeglArgumentException 方法接收到非法参数
ClassCastException 对象强制类型转换出错
NumberFormatException 数字格式转换异常,如把 "abc" 转换为数字
3. try-catch-finally 块
在try-catch后面添加了finally块把该语句放入finally块。无论是否发生异常,finally块中的代码总会执行
4.多重catch块
在按照上面的计算并输出商的示例中,其实至少存在两种异常情况,输入整数的内容和除数为0,在示例中可以统一按照Exception
类型捕获其实完全捕获可以用多重catch块
一段代码可能会引发多种类型的异常,这时,可以在try语句后面跟很多catch语句,异常的子类都在继承与Exception,所以如果把父类放在前面
异常都将被捕获,后面的catch块都将没有执行的机会。
5.声明异常throw
如果在一个方法中抛出了异常,我们就希望调用者能够及时的捕获异常,那么如何通知调用者?
Java语言中通过关键字throws声明某个方法可能抛出异常。throws可以声明多个异常,之间用逗号隔开。
6.日志及分类
日志分类大约有三种
SQL日志:记录系统执行的异常事件
异常日志:记录系统运行中发生的异常事件
业务日志:记录系统运行过程,如用户登录,操作记录。
posted on 2018-03-07 13:15 雅俗共赏_house 阅读(170) 评论(0) 编辑 收藏 举报