美文网首页java学习
NO.32 异常处理

NO.32 异常处理

作者: smallnumber | 来源:发表于2017-08-02 22:18 被阅读0次

java异常处理机制中的try-catch:

示例:异常捕获机制在IO中的用法

异常处理在IO中的应用

finally两道面试题

面试题1:见下面的代码

总是finally返回的值

面试题2:请简述:final,finally,finalize

1)Final可以用于成员变量(包括方法参数),方法、类。

作为变量:变量一旦被初始化便不可改变(对于基本类型,指的是值不变;对于对象类型,指的是引用不变),初始化只可能在两个地方:定义处和构造函数。

作为方法参数:对于基本类型,定义成final参数没有什么意义,因为基本类型就是传值,不会影响调用语句中的变量;对于对象类型,在方法中如果参数确认不需要改变时,定义成final参数可以防止方法中无意的修改而影响到调用方法。

Final方法:不可覆写,编译器将对此方法的调用转化成行内(inline)调用,即直接把方法主体插入到调用处(方法主体内容过多的时候反而会影响效率)

Final类:不可继承

2)finally

异常处理关键字,finally中的主体总会执行,不管异常发生是否。

3)finalize

类的Finalize方法,可以告诉垃圾回收器应该执行的操作,该方法从Object类继承而来。在从堆中永久删除对象之前,垃圾回收器调用该对象的Finalize方法。注意,无法确切地保证垃圾回收器何时调用该方法,也无法保证调用不同对象的方法的顺序。即使一个对象包含另一个对象的引用,或者在释放一个对象很久以前就释放了另一个对象,也可能会以任意的顺序调用这两个对象的Finalize方法。如果必须保证采用特定的顺序,则必须提供自己的特有清理方法。


throw----用于抛出一个异常,通常两种情况会要求抛出一个异常:

1)当前方法中出现了一个满足语法要求,但是不满足业务逻辑要求的情况时,可以当做一个异常抛出给调用者,通知其这样的操作不允许。

2)当前方法代码中确实出现了异常,但是该异常不应当由当前方法来解决时可以将其抛给调用者。

throws----程序中会声明许多方法(Method),这些方法中可能会因某些错误而引发异常,但您不希望直接在这个方法中处理这些异常,而希望调用这个它的方法来统一处理,这时候您可以使用“throws”关键词来声明这个方法将会抛出异常

throw、throws用法

重写父类含有throws异常抛出声明的方法时,子类对该方法重写的准则:

1)可以不再抛出任何异常

2)允许抛出部分异常

3)允许抛出父类方法抛出异常的子类型异常

4)不允许抛出额外异常

5)不允许抛出父类方法抛出异常的父类型异常


Java异常可以分为可检测异常,非检测异常

可检测异常:可检测异常经编译器验证,对于声明抛出异常的任何方法,编译器将强制执行处理或声明规则,不捕捉这个异常,编译器就通不过,不允许编译

非检测异常:非检测异常不遵循处理或者声明规则。在产生此类异常时,不一定非要采取任何适当操作,编译器不会检查是否已经解决了这样一个异常

RuntimeException 类属于非检测异常,因为普通JVM操作引起的运行时异常随时可能发生,此类异常一般是由特定操作引发。但这些操作在java应用程序中会频繁出现。因此它们不受编译器检查与处理或声明规则的限制 。

常见异常:

1)IllegalArgumentException

抛出的异常表明向方法传递了一个不合法或不正确的参数

2)NullPointerException

当应用程序试图在需要对象的地方使用 null 时,抛出该异常

3)ArrayIndexOutOfBoundsException

当使用的数组下标超出数组允许范围时,抛出该异常

4)ClassCastException

当试图将对象强制转换为不是实例的子类时,抛出该异常

5)NumberFormatException

当应用程序试图将字符串转换成一种数值类型,但该字符串不能转换为适当格式时,抛出该异常。

异常常用方法:

getCause()方法:

很多时候,当一个异常由另一个异常导致异常而被抛出的时候,Java库和开放源代码会将一种异常包装成另一种异常。这时,日志记录和打印根异常就变得非常重要。Java异常类提供了 getCause()方法来检索导致异常的原因,这些可以对异常根层次的原因提供更多的信息。

自定义异常,通常用来说明业务逻辑级别的异常:

自定义异常

相关文章

  • NO.32 异常处理

    java异常处理机制中的try-catch: 示例:异常捕获机制在IO中的用法 finally两道面试题 面试题1...

  • 同步或异步异常处理

    同步或异步异常处理 同步读取异常处理 异步读取文件异常处理

  • Java 异常

    异常处理机制 异常处理模型:终止模型:当异常发生时,就进入异常处理程序,处理结束并不返回异常发生位置继续执行;恢复...

  • 第十二章:异常处理

    异常处理语法格式: try: ...处理语句 except 异常类型: ...异常处理语句 pytho...

  • Spring MVC 全局统一异常处理(注解方式)

    全局异常处理 对异常处理类增加@ControllerAdvice 增加异常处理方法,使用@ExceptionHan...

  • 异常处理设计文档

    一、异常处理流程说明 在ESB处理过程中,若发生异常,将进入异常流程的处理。一个异常处理流程大致如下: ESB处理...

  • Java异常处理机制

    什么是异常处理机制: 异常处理机制: 让程序发生异常时,按照代码预先设定的异常处理逻辑,针对性地处理异常,让程序尽...

  • ASP .NET Core Web API_05_异常处理

    默认异常处理 自定义异常处理

  • springboot 异常捕获和处理

    springboot 异常捕获和处理 异常捕获处理

  • NDK开发---C++学习(七):异常

    前言 C++的异常处理机制能够将异常检测与异常处理分离开来,当异常发生时,它能自动调用异常处理程序进行错误处理。把...

网友评论

    本文标题:NO.32 异常处理

    本文链接:https://www.haomeiwen.com/subject/luvslxtx.html