java零基础异常处理

java零基础异常处理文章目录 一 前言 二 异常概述及异常体系结构 1 概述 2 异常体系结构 三 异常处理方式 两种 1 方式一 try catch finally 2 方式二 throws 四 如何选择处理异常方式 五 手动抛出异常 throw 六 自定义异常类 七 异常处理总结 一 前言 这篇文章是我之前学过的基础总结

大家好,我是讯享网,很高兴认识大家。



文章目录

  • 一、前言
  • 二、异常概述及异常体系结构
    • 1.概述
    • 2.异常体系结构
  • 三、异常处理方式(两种)
    • 1.方式一:try-catch-finally
    • 2.方式二:throws
  • 四、如何选择处理异常方式
  • 五、手动抛出异常(throw)
  • 六、自定义异常类
  • 七、异常处理总结

一、前言

这篇文章是我之前学过的基础总结,希望对大家有所帮助!

二、异常概述及异常体系结构

1.概述

我们在做程序开发时候,都想着把代码写的完美无瑕(不大可能),但是真实情况是在系统运行代码时,仍然会遇到一些问题,不能靠代码避免,比如:

  • 客户输入的数据格式
  • 读取文件是否存在
  • 网络是否始终保持通畅

我们把这类问题,归结为异常!

异常概念:在Java语言中,将程序执行中发生的不正常情况称为异常(异常指的并不是语法错误,语法错了,编译不通过,不会产生字节码文件,根本不能运行)

Java中异常分为两类

  1. Error:java虚拟机无法解决的严重问题(JVM系统内部错误、资源耗尽),一般没办法编写针对性代码进行处理(处理不了
 
讯享网 
  1. Exception:因编程错误或偶尔的外在因素导致的一般性问题,可以使用针对性的代码进行处理(空指针访问,试图读取不存在的文件,网络连接中断,数组角标越界等)

注意:我们平常将Error和Exception都称作广义上的异常,但是由于我们不处理Error,所以我们平时在开发中提到的异常一般指的是Exception,我们说的异常处理指的就是狭义上的异常:Exception,所以此博客主要讲解的异常处理针对的是Exception

2.异常体系结构

捕获错误最理想的是编译期间,但有的错误只在运行期间发生,比如:除数为0、数组下标越界等

Exception分类:编译时异常(需要处理)、运行时异常(一般不处理)

体系结构图如下
异常的顶级父类是 java.lang.Throwable,其下有两个子类:java.lang.Error 与 java.lang.Exception,平常所说的异常指java.lang.Exception 。

三、异常处理方式(两种)

Java采用的异常处理机制,是将异常处理的程序代码集中在一起,与正常的程序代码分开,使得程序简洁、优雅,并易于维护。其实异常处理并非真正意义上将异常代码改正,修改代码操作还是需要开发人员自己去做!

异常的处理:抓抛模型
过程一(抛ÿjava零基础异常处理09;:程序在正常执行过程中,一旦出现异常,就会在异常代码出生成一个对应异常类的对象,并将此对象抛出。一旦抛出对象以后,其后的代码就不再执行。
过程二(抓):可以理解为异常处理的方式:①try-catch-finally ②throws

关于异常对象的产生

  • 系统自动生成的异常对象
  • 手动生成一个异常对象,并抛出(throw)

1.方式一:try-catch-finally

使用格式:

讯享网

代码展示与说明:

 

上述代码中只使用了try-catch结构,并没有使用finally,接下来我们学习一下finally的使用细节:

  1. finally中声明的是一定会被执行的代码,即使catch中有出现异常,
    try中有return语句,catch中有return语句等情况
  2. 像数据库连接、输入输出流、网络编程Socket等资源,JVM是不能自动回收的,
    我们需要自己手动进行资源释放。此时资源释放需要声明在finally中。为了防止释放之前的代码有异常,导致资源不被释放,所以放在finally中
  3. try-catch-finally可以嵌套使用
讯享网

体会1:使用try-catch-finally处理编译时异常,使得程序在编译就不在报错但是运行时仍可能报错。相当于我们使用try-catch-finally将一个编译时可能出现的异常延迟到运行时出现。

体会2:开发中,由于运行时异常比较常见,所以我们通常就不针对运行时异常编写try-catch-finally,针对于编译时异常一定要考虑异常的处理(进行代码修改)!

2.方式二:throws

该方式写在方法的声明处,指明此方法执行时可能会抛出的异常类型,一旦当方法体执行时出现异常,仍会在异常代码处生成一个异常类的对象,此对象满足throws后异常类型时就会被抛出。异常代码后续的代码不再执行!

代码演示:

 

体会:两种异常处理方式的区别?

  • try-catch-finally真正的将异常处理(并不是修改代码修正异常)
  • throws方式(甩锅)只是将异常抛给方法的调用者,并没有真正将异常处理掉!

注意:子类重写的方法抛出的异常类型不大于(<=)父类被重写方法抛出的异常类型

四、如何选择处理异常方式

我们在开发中处理异常以该选择这两种方式中的哪一种呢?

  • 如果父类中被重写的方法没有throws方式处理异常,则子类重写的方法也不能够使用throws(原因看上述注意),意味着子类重写的方法中有异常,就必须使用try-catch-finally方式处理!
  • 执行的方法a中,先后又调用了另外的几个方法,这几个方法是递进关系执行的。建议这几个方法使用throws方式进行处理。而执行的方法a可以考虑使用try-catch-finally方式进行处理

二次理解:我们现在的两种异常处理方式,指的是代码执行之前可能会出现问题,我们提前做一个预案,万一出现问题了我们该怎么办!比如:弹出一个提示框。当然我们同时要明白:异常处理并不是真正意义上讲异常解决!异常处理机制不会帮助我们修正代码,还是需要我们自己处理修改异常代码!

五、手动抛出异常(throw)

关于异常对象的产生:

  1. 系统自动生成的异常对象
  2. 手动生成异常对象并抛出(throw)

代码展示:

 

六、自定义异常类

我们上述见到的异常都是Java提供好的(官方的),我们当然也可以自己去自定义异常

如何自定义异常类

  • 1.自定义类继承于现有的异常类结构:RuntimeException、Exception
  • 2.提供全局常量:serialVersionUID 序列版本号,用于标识类
  • 3.提供重载的构造器

代码展示:

 

七、异常处理总结

5个关键字几乎就能涵盖异常处理的所有内容了!

小讯
上一篇 2024-12-26 14:59
下一篇 2025-01-03 08:23

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/9220.html