异常处理机制

来源:互联网 发布:mdf文件用mysql打开 编辑:程序博客网 时间:2024/05/20 02:30

异常(exception

一、异常就是导致程序终止的一种指令流,异常会使程序终止执行。

二、Throwable类是java语言中所有错误和异常的超类,有ErrorException 两种直接子类,ExceptionError的子类名都是以父类名作为后缀。

三、异常处理的原则:

  • 谁调用谁处理
  • 异常只能用于非正常情况,try-catch的存在也会影响性能;
  • 需要为异常提供说明文档,比如Java doc,如果自定义了异常或某一个方法抛出了异常,我们应该记录在文档注释中;
  • 尽可能避免异常.如NullPointerException;
  • 异常的粒度很重要,应该为一个基本操作定义一个 try-catch 块,不要为了简便,将几百行代码放到一个 try-catch 块中;
  • 不建议在循环中进行异常处理,应该在循环外对异常进行捕获处理(在循环之外使用try-catch);
  • 自定义异常尽量使用RuntimeException类型的。


四、常见的Error:

  • StackOverflowError:当应用程序递归太深而发生内存溢出时,抛出该错误。

五、常见的Exception:

  •  NullPointerException:空指针异常,一般指当对象为null的时候,调用了该对象的方法,字段.
  •  ArrayIndexOutOfBoundsException:数组的索引越界,(小于0或者大于等于数组长度)
  • NumberFormatException:数字格式化异常,一般指,把非0~9的字符串转换为整数.

六、Throwable类的方法:

  • (String)  getMessage() //获取异常的描述信息,原因
  • (String)  toString() //获取异常的类型和异常的描述信息(一般不用)
  • (void) printStackTrace() //打印异常的跟踪栈信息并输出到控制台,包含了异常的类型、原因及出现的位置(方便调试和修改,写在catch语句中)。(不肖用System.out.print();)。

七、throwsthrow

  • throws用于标识函数暴露出的异常。

Eg:

private static int devide(int n1,int n2) throws Exception{}


  • throw用于抛出异常对象。
  • throwsthrow的区别:1thorws用在函数上,后面跟异常类名; 2throw用在函数内,后面跟异常对象

八、捕获异常(try-catch语句块):

try{

     编写可能会出现异常的代码

}catch(异常类型  e){

     要处理异常的代码写这里

     //记录日志/打印异常信息/继续抛出异常

}finally{

这里面的代码一定会执行(但虚拟机关闭时无法执行 System.exit(0);//退出JVM

}

/*注意:

1)trycatch都不能单独使用,必须连用

2)一个catch语句,只能捕获一种类型的异常,如果需要捕获多种异常,就得使用多个catch语句.

3)代码在一瞬间只能出现一种类型的异常,只需要一个catch捕获,不可能同时出现多个异常*/


送给大家一首歌,看到歌词共勉。偷笑偷笑偷笑


九、自定义异常:

  • 含义:在开发中根据自己业务的异常情况来定义异常类。自定义一个业务逻辑异常: LogicException
  • 异常类如何定义:
    • 方式1):自定义一个受检查的异常类:自定义类 并继承于java.lang.Exception.
    • 方式2):自定义一个运行时期的异常类:自定义类 并继承于java.lang.RuntimeException.

十、异常细节:

  • RuntimeException 及其子类如果在函数中被throw抛出,可以不用在函数上声明;
  • 一个方法被覆盖时,覆盖它的方法必须抛出相同的异常或异常的子类;
  • 如果父类抛出多个异常,那么覆写方法必须抛出那些异常的一个子集,不能抛出新的异常。

原创粉丝点击