Java SE 进阶复习(三)异常

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/Unicorn_JF/article/details/100047925

1、Java中的异常处理机制的简单原理和应用

  1. 异常是指java程序运行时(非编译)所发生的非正常情况或错误。

  2. Java对异常进行了分类,不同类型的异常分别用不同的Java类表示,所有异常的根类为java.lang.Throwable,Throwable下面又派生了两个子类:ErrorException

    Error:表示应用程序本身无法克服和恢复的一种严重问题,程序只有奔溃了,例如,说内存溢出和线程死锁等系统问题。

    Exception:表示程序还能够克服和恢复的问题,其中又分为系统异常普通异常

    系统异常:是软件本身缺陷所导致的问题,也就是软件开发人员考虑不周所导致的问题,软件使用者无法克服和恢复这种问题,但在这种问题下还可以让软件系统继续运行或者让软件挂掉,例如,数组脚本越界(ArrayIndexOutOfBoundsException),空指针异常(NullPointerException)、类转换异常(ClassCastException);

    普通异常是运行环境的变化或异常所导致的问题,是用户能够克服的问题,例如,网络断线,硬盘空间不够,发生这样的异常后,程序不应该死掉。

java为系统异常和普通异常提供了不同的解决方案,编译器强制普通异常必须try…catch处理或用throws声明继续抛给上层调用方法处理,所以普通异常也称为checked异常,而系统异常可以处理也可以不处理,所以,编译器不强制用try…catch处理或用throws声明,所以系统异常也称为unchecked异常。

2、运行时异常与一般异常有何异同?

异常表示程序运行过程中可能出现的非正常状态,运行时异常表示虚拟机的通常操作中可能遇到的异常,是一种常见运行错误。java编译器要求方法必须声明抛出可能发生的非运行时异常,但是并不要求必须声明抛出未被捕获的运行时异常。

3、检查性异常、运行时异常、错误

  1. 检查性异常:最具代表的检查性异常是用户错误或问题引起的异常,这是程序员无法预见的。例如要打开一个不存在文件时,一个异常就发生了,这些异常在编译时不能被简单地忽略。检查性异常必须使用try catch或者throws等关键字进行处理,否则编译器会报错

    所有的检查性异常都继承自java.lang.Exception;所有的非检查性异常都继承自java.lang.RuntimeException。

    非检查性异常一般是程序代码写的不够严谨而导致的问题,可以通过修改代码来规避

  2. 运行时异常: 运行时异常是可能被程序员避免的异常。与检查性异常相反,运行时异常可以在编译时被忽略。

  3. 错误: 错误不是异常,而是脱离程序员控制的问题。错误在代码中通常被忽略。例如,当栈溢出时,一个错误就发生了,它们在编译也检查不到的。

4、error和exception有什么区别?

  1. error :表示恢复不是不可能但很困难的情况下的一种严重问题。比如说内存溢出。不可能指望程序能处理这样的情况。
  2. exception:表示一种设计或实现问题。也就是说,它表示如果程序运行正常,从不会发生的情况。

5、throw 和 throws 的区别?

throws是用来声明一个方法可能抛出的所有异常信息,throws是将异常声明但是不处理,而是将异常往上传,谁调用我就交给谁处理。而throw则是指抛出的一个具体的异常类型。

6、常见的异常类有哪些?

  1. NullPointerException:当应用程序试图访问空对象时,则抛出该异常。
  2. SQLException:提供关于数据库访问错误或其他错误信息的异常。
  3. IndexOutOfBoundsException:指示某排序索引(例如对数组、字符串或向量的排序)超出范围时抛出。
  4. NumberFormatException:当应用程序试图将字符串转换成一种数值类型,但该字符串不能转换为适当格式时,抛出该异常。
  5. FileNotFoundException:当试图打开指定路径名表示的文件失败时,抛出此异常。
  6. IOException:当发生某种I/O异常时,抛出此异常。此类是失败或中断的I/O操作生成的异常的通用类。
  7. ClassCastException:当试图将对象强制转换为不是实例的子类时,抛出该异常。
  8. ArrayStoreException:试图将错误类型的对象存储到一个对象数组时抛出的异常。
  9. IllegalArgumentException:抛出的异常表明向方法传递了一个不合法或不正确的参数。
  10. ArithmeticException:当出现异常的运算条件时,抛出此异常。例如,一个整数“除以零”时,抛出此类的一个实例。
  11. NegativeArraySizeException:如果应用程序试图创建大小为负的数组,则抛出该异常。
  12. NoSuchMethodException:无法找到某一特定方法时,抛出该异常。
  13. SecurityException:由安全管理器抛出的异常,指示存在安全侵犯。
  14. UnsupportedOperationException:当不支持请求的操作时,抛出该异常。
  15. RuntimeExceptionRuntimeException:是那些可能在Java虚拟机正常运行期间抛出的异常的超类。

猜你喜欢

转载自blog.csdn.net/Unicorn_JF/article/details/100047925