网站首页 > 文章精选 正文
在实际的开发过程中,往往会遇到各种各样的编程异常,如何处理这些异常,直接会影响到整个程序和系统的稳定性,如果不能在合适的地方抛出合适的异常或者是对异常进行捕获。那么就会影响到整个程序的运行。所以如何处理异常,是作为每个开发者来说必不可少的开发技能。
异常相关概念
Java中的异常是指,程序运行不能通过正常的方式来完成,可以通过抛出异常的方式来退出程序或者是退出某个方法,在异常中封装了方法执行过程中有可能出现的问题信息以及问题原因,在检查的时候也有利于程序员发现自己的问题。
在方法执行的过程中,当出现异常的时候,Java语言的异常处理机制会将代码的执行权交给异常处理器,异常处理器根据在系统中定义的异常处理规则执行不同的异常处理逻辑(抛出的异常或者捕获处理异常)。
异常的分类
如图所示,在Java中Throwable作为错误或者异常的父类,Throwable有可以分为Error和Exception。常见的Error有AWTError、ThreadDeath,而Exception又可以分为RuntimeException和CheckedException。等等
Error是指Java程序的运行错误,如果程序在启动的时候出现Error,则整个程序都会启动失败;如果程序在运行过程中出现Error,则整个的程序将会退出进程。出现Error通常是因为系统的内部错误导致或者是系统资源消耗殆尽所引起的,Error不能被在运行过程中被动态处理。如果程序出现了Error,则系统所能做的工作只能是记录错误的原因或者是安全终止程序运行状态。
Exception是指Java程序在运行过程中出现的异常,也就是程序在执行的过程中执行了开发者不想看到的代码,这样的异常是可以被Java的异常处理机制所处理的。Exception是整个的Java程序代码中最为核心的处理类。可以分为运行时异常RuntimeException和检查异常CheckedException。
RuntimeException:是指在程序运行过程中出现异常,RuntimeException可以被捕获并且处理,不会影响其他程序运行部分的结果。如果出现了RuntimeException,一定是程序中的某个逻辑出现了问题导致。常见的异常有NullPointerException、
ArrayIndexOutOfBundsException等等。
CheckedException:是指在程序编译的时候Java编译器会检查代码并且捕获CheckedException,这就要求程序在需要的地方添加try catch语句来捕获并处理异常,常见的CheckedException有ClassNotFundException、SQLException等等。
异常处理方式
Java中异常处理的方式有两种,一种是自己利用try catch代码块进行捕获,另一种是抛出异常让异常处理机制进行处理。
- 抛出异常:当我们在开发过程中,遇到异常如果不进行具体的处理,那么就要将异常抛出到调用者进行处理。而调用者有可能直接处理异常,也有可能继续向上抛出异常,常见的异常抛出的方式有三种形式 throws、throw、系统自动抛出异常。其中throws作用在方法上,可以抛出多个异常。throw作用在方法内,表明明确抛出的异常。
- 使用try catch代码块进行捕获:使用try catch捕获异常的时候能够针对具体的某种异常进行处理,并且在捕获到异常之后进行相关内容的具体处理代码。
Throws与Throw的区别
- 位置不同:Throws是作用在方法上的,而throw是作用在方法内部的
- 功能不同:throws用来声明方法在运行过程中可能出现的异常有哪些,方便调用者可以根据不同的异常,进行预先的异常处理操作,throw 用来抛出已经封装好的异常对象,程序执行到throw的时候后续的代码将不会在执行。而是跳转到调用者的异常处理机制进行处理完成,也就是说throw后面的语句将无法执行,前提是除了finally代码块。
猜你喜欢
- 2025-07-03 Java面试题及答案最全总结(2025春招版)
- 2025-07-03 史上最全的Java并发专题面试常见问题60道
- 2025-07-03 Java面试题及答案最全总结(2025版)
- 2025-07-03 大厂面试冲刺,Java“实战”问题三连,你碰到了哪个?
- 2025-07-03 java面试必备:七个常见的Java算法问题和示例答案
- 2025-07-03 10 个经典的 Java 集合面试题,看你能否答得上来?
- 2025-07-03 屡次拿不到offer,这10个经典的Java面试问题你答得上来吗?
- 2025-07-03 25 年 Java 开发者面试必问 TOP10 核心问题及破题攻略
- 2025-07-03 Java面试题及答案最全总结(2023版)
- 2025-07-03 Java面试场景题及答案最全总结(2025版持续更新)
- 最近发表
- 标签列表
-
- newcoder (56)
- 字符串的长度是指 (45)
- drawcontours()参数说明 (60)
- unsignedshortint (59)
- postman并发请求 (47)
- python列表删除 (50)
- 左程云什么水平 (56)
- 计算机网络的拓扑结构是指() (45)
- 编程题 (64)
- postgresql默认端口 (66)
- 数据库的概念模型独立于 (48)
- 产生系统死锁的原因可能是由于 (51)
- 数据库中只存放视图的 (62)
- 在vi中退出不保存的命令是 (53)
- 哪个命令可以将普通用户转换成超级用户 (49)
- noscript标签的作用 (48)
- 联合利华网申 (49)
- swagger和postman (46)
- 结构化程序设计主要强调 (53)
- 172.1 (57)
- apipostwebsocket (47)
- 唯品会后台 (61)
- 简历助手 (56)
- offshow (61)
- mysql数据库面试题 (57)