Java公开课-04.异常

简介: 一,异常的概念   程序在运行时,发生了我们没有预测的结果,它阻止了程序按照我们预期效果执行 二,怎么保证我们的程序在发生异常以后 ,代码继续执行?   异常处理机制   在程序发生异常以后,还能按照我们事先设定好的逻辑,继续执行后续代码! 三,异常的分类和结构图   1.所有异常和错误的父类--Throwable     Throwable类是Java异常类型的顶层父类,一个对象只有是Throwable类(直接或间接的)实例,它才是一个异常对象。

一,异常的概念

  程序在运行时,发生了我们没有预测的结果,它阻止了程序按照我们预期效果执行

二,怎么保证我们的程序在发生异常以后 ,代码继续执行?

  异常处理机制

  在程序发生异常以后,还能按照我们事先设定好的逻辑,继续执行后续代码!

三,异常的分类和结构图

  1.所有异常和错误的父类--Throwable

    Throwable类是Java异常类型的顶层父类,一个对象只有是Throwable类(直接或间接的)实例,它才是一个异常对象。才能被异常处理机制识别,JDK中内建了一些常用的异常类,我们也可以自定义异常

  2.根据编译器对异常的处理要求,异常分俩类

    2.1运行时异常(RuntimeException):在程序运行期间产生的异常!

    2.2受查异常(checked Excep):在程序编译期产生的异常!

  3 Throwable

    3.1 Error          //这个错,靠异常处理机制处理不了,一般是代码问题造成的堆栈爆炸等

    3.2 Exception

      3.2.1 受查异常

        3.2.1.1 IOException

        3.2.1.2 EOFException

        3.2.1.3 ClassNotFoundException

        3.2.1.4 FileNotFoundException

      3.2.2 RuntimeException

        3.2.2.1 ArithmeticException

        3.2.2.2 InputMismatchException

        3.2.2.3 NullPointException

四,异常处理方式(一):try-catch-finally

  1.try的使用

    001.try代码块不能单独使用,必须和catch或finally中的一个一起使用

    002.可能发生异常的代码

    003.如果我们try代码块中不发生异常,有finally的情况下,先执行finally,之后执行finally之后的代码块

      如果我们try代码块发生异常,先去catch中匹配异常,如果匹配成功,执行对应的catch,否则执行finally,然后程序终止

  2.catch的使用

    001.每一个catch代码块都是用于捕获并处理一个特定的异常或者是这个异常的子类!

    002.catch(ArithmeticException ex)  定义了异常类型

    003.可以同时出现多个,但不能重复

    004.多个catch代码块中异常类型书写顺序,必须是  从小到大

    005.我们会从多个catch代码块中找到一个最先匹配的,然后交给这个代码块处理

    006.每个代码块中的变量是独立的,别的代码块不能访问

    007.如果每个代码块都不匹配。先去执行fianlly,之后终止程序

    008.如果try中没有发生异常,则所有catch块被忽略

    009.jdk1.7的版本中支持多个异常声明在一个catch块中

  3.finally的使用

    001.无论发生什么,fially都会执行

    002.如果try中没有异常,但是有return,这时候会先执行finally之后执行return

    003.如果代码中出现System.exit(int status)那么不会执行finally

      System.exit(0);  正常退出

      System.exit(非0);  非正常退出

    004.做一些程序的清理工作,关闭流,释放数据库的连接等

五,异常处理方式(二):throw-throws

  1.throw

    01.抛出的异常类型可以是Exception或者其子类

    02.一条throw语句只能抛出一个异常对象

    03.throw只能出现在方法体内

    04.对于throw抛出的异常我们有俩种处理方式

      001.try。。。catch。。。finally

      002.throws

  2.throws

    01.throws声明在方法的名称之后

    02.throws可以声明多个 ,每个异常异常之间用逗号隔开

    03.throws可以声明异常,表示当前方法可以出现异常,房法的调用者来处理异常

    04.如果在主函数中使用throws,则由我们的jvm处理

六,异常链

    用处:例子:连环汽车追尾,如何头车找到尾车

    异常链是指将捕获的异常包装进一个新的异常中,新异常中 记录原始异常的信息,并重新抛出异常的处理方式

七,自定义异常

    创建继承Exception的类,或继承Exception的子类的类

    重写构造,写单个带String,还有带String和异常对象的那个构造

八。异常的使用原则

  1.异常只能用于非正常情况

  2.为异常提供说明文档

  3.尽可能避免异常,特别是运行异常

  4.保持异常的原子性

  5.避免过于庞大的try代码块

  6.在catch块中指定具体的异常类型

  7.不要在catch块中忽略捕获的异常

目录
相关文章
|
8天前
|
Java
在 Java 中捕获和处理自定义异常的代码示例
本文提供了一个 Java 代码示例,展示了如何捕获和处理自定义异常。通过创建自定义异常类并使用 try-catch 语句,可以更灵活地处理程序中的错误情况。
|
8天前
|
Java
在 Java 中,如何自定义`NumberFormatException`异常
在Java中,自定义`NumberFormatException`异常可以通过继承`IllegalArgumentException`类并重写其构造方法来实现。自定义异常类可以添加额外的错误信息或行为,以便更精确地处理特定的数字格式转换错误。
|
9天前
|
IDE 前端开发 Java
怎样避免 Java 中的 NoSuchFieldError 异常
在Java中避免NoSuchFieldError异常的关键在于确保类路径下没有不同版本的类文件冲突,避免反射时使用不存在的字段,以及确保所有依赖库版本兼容。编译和运行时使用的类版本应保持一致。
|
11天前
|
Java 编译器
如何避免在 Java 中出现 NoSuchElementException 异常
在Java中,`NoSuchElementException`通常发生在使用迭代器、枚举或流等遍历集合时,尝试访问不存在的元素。为了避免该异常,可以在访问前检查是否有下一个元素(如使用`hasNext()`方法),或者使用`Optional`类处理可能为空的情况。正确管理集合边界和条件判断是关键。
|
14天前
|
Java
Java异常捕捉处理和错误处理
Java异常捕捉处理和错误处理
14 1
|
15天前
|
Java 编译器 开发者
Java异常处理的最佳实践,涵盖理解异常类体系、选择合适的异常类型、提供详细异常信息、合理使用try-catch和finally语句、使用try-with-resources、记录异常信息等方面
本文探讨了Java异常处理的最佳实践,涵盖理解异常类体系、选择合适的异常类型、提供详细异常信息、合理使用try-catch和finally语句、使用try-with-resources、记录异常信息等方面,帮助开发者提高代码质量和程序的健壮性。
34 2
|
22天前
|
Java
如何在 Java 中处理“Broken Pipe”异常
在Java中处理“Broken Pipe”异常,通常发生在网络通信中,如Socket编程时。该异常表示写入操作的另一端已关闭连接。解决方法包括:检查网络连接、设置超时、使用try-catch捕获异常并进行重试或关闭资源。
|
25天前
|
存储 安全 Java
如何避免 Java 中的“ArrayStoreException”异常
在Java中,ArrayStoreException异常通常发生在尝试将不兼容的对象存储到泛型数组中时。为了避免这种异常,确保在操作数组时遵循以下几点:1. 使用泛型确保类型安全;2. 避免生类型(raw types)的使用;3. 在添加元素前进行类型检查。通过这些方法,可以有效防止 ArrayStoreException 的发生。
|
26天前
|
人工智能 Oracle Java
解决 Java 打印日志吞异常堆栈的问题
前几天有同学找我查一个空指针问题,Java 打印日志时,异常堆栈信息被吞了,导致定位不到出问题的地方。
33 2
|
29天前
|
Java 索引
如何避免在 Java 中引发`StringIndexOutOfBoundsException`异常
在Java中,处理字符串时若访问了不存在的索引,会抛出`StringIndexOutOfBoundsException`异常。为避免此异常,应确保索引值在有效范围内,例如使用`length()`方法检查字符串长度,并确保索引值不小于0且不大于字符串长度减1。
下一篇
无影云桌面