网站首页 > 精选教程 正文
在实际的开发过程中,往往会遇到各种各样的编程异常,如何处理这些异常,直接会影响到整个程序和系统的稳定性,如果不能在合适的地方抛出合适的异常或者是对异常进行捕获。那么就会影响到整个程序的运行。所以如何处理异常,是作为每个开发者来说必不可少的开发技能。
异常相关概念
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代码块。
- 上一篇: 9个处理Java异常的最佳实践
- 下一篇: 异常处理,JAVA中异常处理的介绍
猜你喜欢
- 2024-11-20 Java中的异常
- 2024-11-20 小白也能看懂的Java异常处理机制
- 2024-11-20 JVM是如何处理各种异常的呢?
- 2024-11-20 Java异常之异常处理类详解和代码举例
- 2024-11-20 第25天|Java入门有野,异常处理
- 2024-11-20 java安全编码指南之:异常处理
- 2024-11-20 解读Java编程思想--异常处理
- 2024-11-20 Java中异常处理机制的详细解析及其优化示例代码
- 2024-11-20 学习java, 需要知道的异常处理
- 2024-11-20 java异常处理
你 发表评论:
欢迎- 04-11Java面试“字符串三兄弟”String、StringBuilder、StringBuffer
- 04-11Java中你知道几种从字符串中找指定的字符的数量
- 04-11探秘Java面试中问的最多的String、StringBuffer、StringBuilder
- 04-11Python字符串详解与示例(python字符串的常见操作)
- 04-11java正则-取出指定字符串之间的内容
- 04-11String s1 = new String("abc");这句话创建了几个字符串对象?
- 04-11java判断字符串中是否包含某个字符
- 04-11关于java开发中正确的发牌逻辑编写规范
- 最近发表
-
- Java面试“字符串三兄弟”String、StringBuilder、StringBuffer
- Java中你知道几种从字符串中找指定的字符的数量
- 探秘Java面试中问的最多的String、StringBuffer、StringBuilder
- Python字符串详解与示例(python字符串的常见操作)
- java正则-取出指定字符串之间的内容
- String s1 = new String("abc");这句话创建了几个字符串对象?
- java判断字符串中是否包含某个字符
- 关于java开发中正确的发牌逻辑编写规范
- windows、linux如何后台运行jar(并且显示进程名)
- 腾讯大佬私人收藏,GitHub上最受欢迎的100个JAVA库,值得学习
- 标签列表
-
- nginx反向代理 (57)
- nginx日志 (56)
- nginx限制ip访问 (62)
- mac安装nginx (55)
- java和mysql (59)
- java中final (62)
- win10安装java (72)
- java启动参数 (64)
- java链表反转 (64)
- 字符串反转java (72)
- java逻辑运算符 (59)
- java 请求url (65)
- java信号量 (57)
- java定义枚举 (59)
- java字符串压缩 (56)
- java中的反射 (59)
- java 三维数组 (55)
- java插入排序 (68)
- java线程的状态 (62)
- java异步调用 (55)
- java中的异常处理 (62)
- java锁机制 (54)
- java静态内部类 (55)
- java怎么添加图片 (60)
- java 权限框架 (55)
本文暂时没有评论,来添加一个吧(●'◡'●)