网站首页 > java教程 正文
在实际的开发过程中,往往会遇到各种各样的编程异常,如何处理这些异常,直接会影响到整个程序和系统的稳定性,如果不能在合适的地方抛出合适的异常或者是对异常进行捕获。那么就会影响到整个程序的运行。所以如何处理异常,是作为每个开发者来说必不可少的开发技能。
异常相关概念
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代码块。
- 上一篇: 深入理解java异常处理
- 下一篇: 5分钟课堂:Java异常处理
猜你喜欢
- 2025-01-03 聊一聊java中的异常
- 2025-01-03 学习Java异常,吃透这篇足够
- 2025-01-03 轻松搞定 JAVA 异常面试,25 道题及答案全掌握!
- 2025-01-03 Java全局异常处理,你不知道的骚操作(含hotspot源码分析)
- 2025-01-03 Android应用编程基础第19篇:Java语言中的异常处理
- 2025-01-03 Java中异常处理机制的详细解析及其优化示例代码
- 2025-01-03 java异常处理try/catch/finally
- 2025-01-03 Java异常详细介绍
- 2025-01-03 java安全编码指南之:异常处理
- 2025-01-03 Java8学习-Lambda表达式中处理异常的解决方案
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- java反编译工具 (77)
- java反射 (57)
- java接口 (61)
- java随机数 (63)
- java7下载 (59)
- java数据结构 (61)
- java 三目运算符 (65)
- java对象转map (63)
- Java继承 (69)
- java字符串替换 (60)
- 快速排序java (59)
- java并发编程 (58)
- java api文档 (60)
- centos安装java (57)
- java调用webservice接口 (61)
- java深拷贝 (61)
- 工厂模式java (59)
- java代理模式 (59)
- java.lang (57)
- java连接mysql数据库 (67)
- java重载 (68)
- java 循环语句 (66)
- java反序列化 (58)
- java时间函数 (60)
- java是值传递还是引用传递 (62)
本文暂时没有评论,来添加一个吧(●'◡'●)