首页 > 其他分享 >异常值处理

异常值处理

时间:2024-08-15 21:04:54浏览次数:10  
标签:处理 抛出 try finally 异常 throws

异常概述

异常:异常就是Java程序在运行过程中出现的错误。

异常由来:问题也是现实生活中一个具体事务,也可以通过java 的类的形式进行描述,并封装成对象。其实就是Java对不正常情况进行描述后的对象体现。

我们见过的异常:角标越界异常、空指针异常。

异常分类图解

异常举例

  • 除数为0
  • 数组访问越界

JVM的默认处理方案

  • 把异常的名称,错误原因及异常出现的位置等信息输出在了控制台
  • 程序停止执行

异常处理方案

  • try…catch…finally
  • throws

try…catch处理方式

一个异常的情况

多个异常的情况

平级情况

存在上下级的情况

JDK7的新特性及注意事项

举例

try {
    int a = 10;
    System.out.println(a / 2);  // 可能抛出ArithmeticException()
} catch (ArithmeticException e) {
    // 处理ArithmeticException
} finally {
    // 无论try中的代码是否出现问题,这里的代码都会执行
    System.out.println("好好学习,天天向上!");
}

编译时异常和运行时异常的区别

Java中的异常被分为两大类:编译时异常和运行时异常。

  • 编译时异常:Java程序必须显示处理,否则程序就会发生错误,无法通过编译。
  • 运行时异常:无需显示处理,也可以和编译时异常一样处理。

finally的特点作用及面试题

finally的特点

  • 被finally控制的语句体一定会执行。
  • 特殊情况:在执行到finally之前JVM退出了(比如System.exit(0))。

finally的作用

  • 用于释放资源,在IO流操作和数据库操作中会见到。

finally相关的面试题

  • final, finally和finalize的区别是什么?
  • 如果catch里面有return语句,请问finally的代码还会执行吗?如果会,请问是在return前还是return后。

Throwable中的方法

  • getMessage():获取异常信息,返回字符串。
  • toString():获取异常类名和异常信息,返回字符串。
  • printStackTrace():获取异常类名和异常信息,以及异常出现在程序中的位置。返回值void。
  • printStackTrace(PrintStream s):通常用该方法将异常内容保存在日志文件中,以便查阅。

throws

定义功能方法时,需要把出现的问题暴露出来让调用者去处理。那么就通过throws在方法上标识。

举例

  • 演示编译时异常和运行时异常的抛出

throw

在功能方法内部出现某种情况,程序不能继续运行,需要进行跳转时,就用throw把异常对象抛出。

举例

  • 演示编译时异常对象和运行时异常对象的抛出

throws和throw的区别

  • throws:用在方法声明后面,跟的是异常类名。可以跟多个异常类名,用逗号隔开。表示抛出异常,由该方法的调用者来处理。throws表示出现异常的一种可能性,并不一定会发生这些异常。
  • throw:用在方法体内,跟的是异常对象名。只能抛出一个异常对象名。表示抛出异常,由方法体内的语句处理。throw则是抛出了异常,执行throw则一定抛出了某种异常。

我们到底该如何处理异常呢

原则:如果该功能内部可以将问题处理,用try。如果处理不了,交由调用者处理,这是用throws

  • 后续程序需要继续运行就try
  • 后续程序不需要继续运行就throws

举例

  • 感冒了就自己吃点药就好了,try
  • 吃了好几天药都没好结果得了新冠,那就的得throws到医院。
  • 如果医院没有特效药就变成Error了。

标签:处理,抛出,try,finally,异常,throws
From: https://www.cnblogs.com/xu-sy122/p/18361803

相关文章

  • java异常你了解多少
    一、知识点概述(1)异常:异常就是Java程序在运行过程中出现的错误。(2)异常由来:问题也是现实生活中一个具体事务,也可以通过java的类的形式进行描述,并封装成对象。其实就是Java对不正常情况进行描述后的对象体现。(3)JVM的默认处理方案把异常的名称,错误原因及异常出现的位置等......
  • SpringBoot统一异常处理
    简介在SpringBoot项目中实现统一的异常处理是一种常见的做法,这有助于保持代码的整洁并提供一致的错误响应格式。SpringBoot中的统一异常处理是一种机制,用于集中管理和格式化应用程序中抛出的所有异常。这种机制可以提高程序的健壮性和用户体验,同时简化开发过程。统一异常处理......
  • 前后端不分离"老"项目,XSS 漏洞处理实践
    前言本月迭代需求没有几个,领导给我派了一个漏洞修复的活。这个项目是一个前后端不分离的ToB老项目,前端使用Velocity模板+JQuery+miniui,后端是用的Spring。嗯,前后端不分离,技术老旧,模块众多且耦合,基础设施不完善,让我从一开始校招(2022)刚进来接触到这个项目时候,就感到“畏惧、难受......
  • 1289、仿真-51单片机垃圾分类处理电机控制手自动模式蜂鸣器报警设计
    毕设帮助、开题指导、技术解答(有偿)见文末。目录一、设计功能二、Proteus仿真三、程序源码四、资料包括一、设计功能1、单片机型号:STC89C52/51、AT89C52/51、AT89S52/51都可通用。2、分为手动模式和自动模式,通过按键“模式”切换。 3、当在手动模式下,按下......
  • C语言最后一讲——预处理超详解
    文章目录1.预定义符号2.`#define`定义常量3.`#define`定义宏4.带有副作用的宏参数5.宏替换的规则6.宏函数的对比7.#和##7.1#运算符7.2##运算符8.命名约定9.`#undef`10.命令行定义11.条件编译12.头文件的包含12.1头文件被包含的方式:12.1.1本地文......
  • # Tkinter Event事件处理
    #本文章建议有python基础学习理解,主要介绍了tkinter库的事件处理,由本人(菜鸟)从通义千问上经过整理获得,较全面和使用方便,希望大佬帮忙进行完善#事件处理,是GUI程序中不可或缺的重要组成部分,相比来说,控件只是组成一台机器的零部件,#而事件处理则是驱动这台机器“正常”运转的......
  • anisble部署及包冲突处理
    用pip3安装ansible查询使用pip工具可以安装的Python包:1.PyPI官方网站网址:https://pypi.org/使用方法:你可以在PyPI官网直接搜索任何Python包的名称。每个包的页面通常会列出详细的信息,包括最新版本、历史版本、文档、安装说明以及依赖关系等。2.pip工具的......
  • 【TES807】基于 XCKU115 FPGA 的双 FMC 接口万兆光纤传输信号处理平台
     板卡概述TES807是一款基于千兆或者万兆以太网传输的双FMC接口信号处理平台。该平台采用XILINX的KintexUltraSacle系列FPGA:XCKU115-2FLVF1924I作为主处理器,FPGA外挂两组72位DDR4SDRAM,用来实现超大容量数据缓存,DDR4的最高数据缓存带宽可以达到2400MHz,DDR4的缓......
  • Python教程:异常捕捉与代码重构
    异常pYthon使用被称为异常的特殊对象来管理程序执行期间发生的错误。每当发生让python不知所错的错误时,他都会创建一个异常对象。当你编写了处理改异常的代码,该程序将继续运行;如果你未对异常进行处理,程序停止,并显示一个traceback,其中包含有关异常的报告。异常是使用try-except代......
  • Java IO、异常处理
    JavaIOJava.io包几乎包含了所有操作输入、输出需要的类。所有这些流类代表了输入源和输出目标。Java.io包中的流支持很多种格式,比如:基本类型、对象、本地化字符集等等。一个流可以理解为一个数据的序列。输入流表示从一个源读取数据,输出流表示向一个目标写数据。一、读取控......