java异常处理机制

Java异常处理机制 在使用计算机语言进行项目开发的过程中,即使程序员把代码写得尽善尽美,在系统的运行过程中仍然会遇到一些问题,因为很多问题不是靠代码能够避免的,比如:客户输入数据的格式,读取文件是否存在,网络是否始终保持通畅等等。程序运行时,发生的不被期望的事件,它阻止了程序按照程序员的预期正常执行,这就是异常(开发过程中的语法错误和逻辑错误不是异常)。Java程序在执行过程中所发生的异常事件可分为两类:Error:Java虚拟机无法解决的严重问题。如:JVM系统内部错误、资源耗尽等严重情况。 阅读详情

java异常处理机制
主要依赖于try,catch,finally,throw,throws五个关键字。
try 关键字后紧跟一个花括号括起来的代码块,简称try块。同理:下面的也被称为相应的块。
它里面可置引发异常的代码。catch后对应异常类型和一个代码块,用于表明catch块用于处理这种类型的代码块

。后还可以跟一个finally块,finally块用于回收在try块里打开的物理资源,异常机制会保证finally块总被执

行。throws关键字主要在方法签名中使用,用于声明该方法可能抛出的异常,而throw则用于抛出一个实际的异

常,throw可以单独作为语句使用,抛出一个具体的异常的对象。

java异常分为两类:
Checked 异常和Runtime异常
java认为 Checked 异常都是可以在编译阶段被处理的异常,所以它强制程序处理所有的Checked异常,而

Runtime异常则无须处理。

java异常处理可以让程序具有更好的容错性,程序更加健壮。当程序 出现意外情形时,系统会自动生成一个

Exception对象来通知程序,从而实现将“业务功能实现代码”和“错误处理代码”分离,提供更好的可读性。

如果执行try块里的业务逻辑代码时出现异常,系统自动会生成一个异常对象,该异常对象被提交给java运行环

境,这个过程被称为抛出(throw)异常。  当java运行环境收到异常对象时,会寻找处理该异常对象的catch

块,如果找到合适的catch块并把该异常交给它处理,该过程被称为捕获异常;如果java运行环境找不到捕获异

常的catch块,则运行环境终止,程序也将退出。

使用finally回收物理资源
当程序在try块里打开了的一些物理资源(数据库连接,网络连接及磁盘文件),这些物理资源必须显示回收。

为了保证一定能够回收try块中打开的物理资源,异常处理机制提供了finally块,无论try块中的代码是否出现

异常,也不管在哪个catch块中被执行,finally块总会被执行。

异常处理结构语法中只有try块是必须的,一旦没有try块,则不能出现catch和finally块,如果存在try块,则

catch块和finally块都是可选的。但二者至少要出现其一。也可以同时出现多个catch块。catch块必须位于try

块后面,而finally必须位于catch块后面(如果存在的话);

当java程序执行try块,catch块,时遇到了return语句或throw语句,这两个语句都会导致该方法的立即结束,

但是系统并不会立即执行这两个语句,而是去寻找该异常处理流程中是否包含finally块,如果没有finally块程

序立即执行return语句或throw语句,方法终止。反之,则系统会立即执行finally块——只有当finally块执行

完后,系统才会再次跳回来执行try块,catch块里的return或throw语句,如果同时在 finally块中也存在

return或throw语句,则finally块已经终止了方法,自然不存在系统再次跳转去执行try或catch块里的return或

throw语句。


使用throws声明抛出异常的思路是:当前方法不知道应该如何处理这种异常,该异常应该由上一级调用者处理,

如果main方法也不知道如何处理这种异常类型。也可以使用throws声明抛出异常,把该异常交给javaJVM处理。

JVM对异常的处理方法:打印异常跟踪栈信息,并终止程序运行。


Checked 异常两大不便:
对于程序中的Checked异常,JAVA要求必须显示捕获并处理该异常,或显式声明抛出,增加了编程的复杂程度;
如果 在方法中显式声明抛出Checked异常,将会导致方法签名与异常耦合,如果该方法是重写父类方法,则该

方法能抛出的异常还受到被重写方法所抛出异常的限制。
使用Runtime异常是比较省事的方式,使用这种方式既可以享受“正常代码和错误代码的分离”,“保证程序具

有较好的健壮性”的优势,又可以避免因为使用Checked异常带来的编程烦恼。

 

如果需要在程序中自行抛出异常,应使用throw语句,throw语句可以单独使用,throw语句不是异常类,而是一

个实例异常,并且每次只能抛出一个实例异常
如果throw语句抛出的是Checked异常,则该throw语句要么位于try块,显式捕获该异常。要么放在一个带throw

声明的方法中,即把该异常交给该方法的调用者处理;如果throw语句抛出的异常是Runtime异常,则该语句既无

须放在try块里,也无须放在带throws声明的方法中;程序可以显式使用try...catch来捕获,并处理,也可以不

理会,把该异常交给方法调用者处理。

 


Java中的异常处理机制是什么? 异常处理是一种编程技术,用于检测和处理程序运行期间发生的错误。在Java中,异常处理机制主要包括异常的抛出、捕获、处理和传递等环节。通过适当的异常处理,可以提高程序的健壮性,确保在遇到错误时程序能够优雅地恢复或终止。除了使用Java内置的异常类外,还可以根据需要定义自定义异常类,以更精确地描述程序中发生的错误。37 }811 }12}1316 try {21 }22 }23}Java中的异常处理机制是确保程序健壮性和用户友好的重要工具。 阅读详情

相关推荐

【OpenCV3】cv::compare()使用详解

cv::compare()主要用于两个图像之间进行逐像素的比较,并输出比较的结果。具体用法如下: cv::compare() bool cv::compare( cv::InputArray src1, // 输入数组1 cv::InputArray src2, // 输入数组2 cv::OutputArray dst, // 输出数组 int cmpop // 比较操作子,见下表 ...

guduruyu的专栏 9757

在windows下使用cmd命令通过adb shell自动调用android模拟或真机的InstrumentRunner进行android 自动化测试

关于adb shell的使用   问题抛出: 怎样在cmd中执行命令让Android测试工程在Android模拟器或Android手机中自动运行进行android自动化测试呢?   解决方案: 使用adb shell命令   前置条件: 1.      下载了android相关的工具android-sdk-windows并进行了环境变量的配置 2.      将重新签名re-s

qicyt1812的专栏 3937

UiAutomator2.0

1.     概述 UI测试(功能测试、黑盒测试)不需要测试者了解应用程序的内部实现细节,只需要知道当执行了某些特定的动作后是否会得到其预期的输出。这种测试方法,在团队合作中可以更好地分离的开发和测试角色。 常见的UI测试的方法是手动去执行,然后去验证程序是否达到的预期的效果,很显然这种方法耗时、繁琐并且很容易出错。因此我们需要一种可靠的方法来进行UI测试,通过测试框架,我们可以完成针对具体使

Java18的专栏 1万+

机器人关节电机发热难题:从工程化角度拆解热管理解决方案(下)

摘要:本文系统分析了机器人关节电机与驱动系统的热管理方案,重点解决局部热点问题。针对不同功率场景提出了热管/均热板散热(适用于中小功率)和液冷散热(适用于高功率)的具体实施方案,详细比较了结构参数、材料选择、安装工艺和散热效果。特别强调了电机-驱动协同热管理的重要性,提出"工况联动+热路径共享"的核心理念,包括一体化散热结构设计和动态控制策略。最后介绍了热仿真与测试验证方法,确保方案的有效落地。通过系统级热管理,可显著降低温升(热点区域降温30-60℃),同时优化体积和能耗。

bother3000的博客 3325

深入解析磁盘性能测试:vdbench与fio的实战对比

本文深入对比了磁盘性能测试两大工具vdbench与fio的核心定位与实战应用。vdbench擅长多客户端、可编排的存储系统集成测试,而fio则以灵活的单机深度定制见长,是测试硬件极限和模拟特定应用IO模型的利器。文章通过安装指南、参数解析和典型场景对比,帮助读者根据需求选择合适工具,精准评估磁盘性能。

weixin_29300931的博客 321

java runtime 异常_java中的java.lang.RuntimeException异常怎么解决?

展开全部解决方式如下:1、通配符{1}修改为{0}。2、form提交地址62616964757a686964616fe59b9ee7ad9431333365633865修改下:注册Form地址:登录Form地址:Java语音特征:Java编程语言的风格十分接近C语言、C++语言。Java是一个纯粹的面向对象的程序设计语言,它继承了C++语言面向对象技术的核心。Java舍弃了C语言中容易引起错误的指...

weixin_29439509的博客 2万+

TSMC40nmLP版图实战:从Design Rule解读到Cadence高效布局布线

本文详细解析了TSMC40nmLP工艺的版图设计实战,从Design Rule解读到Cadence高效布局布线技巧。重点介绍了40nm工艺中的关键设计规则,如最小线宽、间距规则和深N阱规则,并分享了Cadence Virtuoso中的高效工作流和射频模块设计技巧,帮助工程师提升版图设计效率和质量。

weixin_29250403的博客 378

java的异常处理机制详解

Java异常的处理主要依赖于try,catch,finally,throws,throw这五个关键字。下面分别介绍它们:

jingwen的博客 1万+

OpenWrt kmod内核不兼容?手把手教你用脚本强制安装驱动模块(附国内镜像源)

本文详细解决了OpenWrt kmod内核不兼容问题,提供智能脚本强制安装驱动模块的方法,并附有国内镜像源加速配置。通过自动化脚本修改内核MD5校验值,确保kmod包正常安装,同时推荐多个国内镜像源以提升下载速度。

weixin_42549451的博客 539

Android - 蓝牙开发

文章目录科普SIG类型制式编程Classic BluetoothBluetooth Low Energy蓝牙的UUID是什么?有什么用? 科普 https://zh.wikipedia.org/wiki/%E8%97%8D%E7%89%99 蓝牙(英语:Bluetooth),一种无线通讯技术标准,用来让固定与移动设备,在短距离间交换资料,以形成个人局域网(PAN)。其使用短波特高频(UHF)无线电波,经由 2.4 至 2.485 GHz 的 ISM(工业、科学、医疗)频段来进行通信。1994 年由电信商

qq_43323826的博客 1万+

Java 异常处理机制详解

在 Java 编程中,异常处理是一个至关重要的概念。它帮助我们处理程序执行过程中可能出现的错误或异常情况,从而提高程序的可靠性和稳定性。本文将详细介绍 Java 异常处理机制,包括异常的定义、分类、处理方式以及一些最佳实践。

专注Java和MySQL领域知识分享 1989

OSG三维渲染引擎编程学习之一百:“第十一章:OSG粒子” 之 “11.1 粒子的主要模块”

OSG;三维渲染引擎编程学习;第十一章:OSG粒子;11.1 粒子的主要模块

LuckyHanMo的博客 795

【java异常处理机制】

在当前方法(本案例就是main方法)上继续使用throws声明该异常的抛出给调用者解决。具体选取那种取决于异常处理的责任问题。当我们调用一个含有throws声明异常抛出的方法时,编译器要求我们必须处理这个异常,否则编译不通过。自定义异常通常用来定义那些业务上的异常问题。使用try-catch捕获并处理这个异常。throw用来对外主动抛出一个异常。提供超类异常提供的所有种类构造器。需要是Exception的子类。异常的类名要做到见名知义。

qq_36028783的博客 464

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Java中的异常处理机制

Java中的异常处理不仅限于简单的错误报告,还包括了对异常情况的捕获、处理以及必要的资源清理。然而,也需要注意避免过度使用异常处理,因为它可能会对程序的性能产生负面影响,并掩盖潜在的逻辑错误。是Java中处理异常的一种强大机制,它允许开发者编写健壮的代码,能够优雅地处理异常情况,并确保资源得到正确释放。这些异常在编译时不需要被显式地处理,但开发者可以选择捕获并处理它们,以提高程序的健壮性。是Java中处理异常的基本结构,它们共同工作以确保异常能够被妥善处理,并且必要的资源能够被正确释放。

hong161688的博客 1222

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Java 中的异常处理机制

Java的异常处理机制可以让程序具有极好的容错性,让程序更加健壮。当程序运行出现意外情形时,系统会自动生成一个Exception对象来通知程序,从而实现将“业务功能实现代码” 和 “错误处理代码” 分离,提供更好的可读性。

KevinChen2019的博客 6964

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

java中异常处理机制事件机制_Java异常处理机制

Java程序在运行期间,可能会发生不可被期望的事件,它会阻止程序按照程序员的预期正常执行,这就是异常。异常发生时,我们不应该让程序自生自灭,把输出的错误信息返回给用户,因此我们需要对异常进行处理,Java有着非常优秀的异常处理机制。直接上Java异常类之间的结构图,一目了然的看明白很多问题。1、Throwable类是Java异常类型的顶层父类,一个对象只能是Throwable类(或者子类)的实例,...

weixin_42389421的博客 424

Java 中的异常处理机制详解

异常是程序执行期间发生的问题,它中断了程序的正常流程。异常可以由多种原因引起,比如除数为零、数组越界访问、文件找不到等。在 Java 中,所有异常都是从Throwable类派生出来的。Java 的异常处理机制是一个强大的工具,它可以帮助我们编写更加健壮和可维护的代码。正确理解和运用异常处理,不仅能够提高程序的稳定性,还能简化调试过程。希望这篇文章能够为读者提供有价值的指导,帮助大家在日常开发中有效地管理和应对异常情况。

m0_56896669的博客 1241

【JAVA 异常处理机制】

在Java编程中,异常处理是一种重要的机制,用于处理程序运行时可能出现的错误和异常情况。异常处理机制可以帮助开发者优雅地处理异常,提高程序的健壮性和可靠性。提示:以下是本篇文章正文内容,下面案例可供参考自定义异常通常用来定义那些业务上的异常问题异常的类名要做到见名知义需要是Exception的子类提供超类异常提供的所有种类构造器例/*** 非法的年龄异常* 自定义异常通常用来说明业务上的错误.* 自定义异常要注意以下问题:* 1:定义的类名要做到见名知义。

南 阳 的博客 760

JAVA的异常处理机制有什么好处,你造吗?

作为JAVA程序猿的你们,是不是在某个时刻产生一种疑问:为什么要有异常处理机制呢?还记得万有引力是怎么诞生的吗?是因为当年牛顿小朋友躺在树下,书上掉下一个苹果,引起了小牛的关注,于是产生了牛顿定理【小编物理学过太久了,请勿喷】。JAVA的异常应当也由各种各样的疑问,继而产生,最后成为我们今天的JAVA异常处理机制。小伙伴还记得大一时候学习的C语言吗?绞尽脑汁想一想,用C语言的时候有编写过关于Exc

SuperStonne的专栏 5684
上一篇: Java内部类总结
下一篇: 子类抛出的异常类型不能比父类抛出的异常类型更宽泛!
Java18
博客等级 码龄16年 27粉丝 18原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值