异常处理

六、java异常处理

北战南征 提交于 2019-12-26 17:08:07
目录 一、异常的概念 二、异常的分类 三、异常的捕获和处理 四、使用自定义异常 一、异常的概念 java异常是指java提供的用于处理程序 运行过程中 错误的一种机制 所谓错误是指在程序运行的过程中发生的一些异常事件(如:除0溢出,数组下标越界,索要读取的文件不存在等) 设计良好的程序应该在异常发生时提供处理这些错误的方法,是的程序不会因为异常的发生而阻断或产生不可预见的结果 java程序的执行过程中如出现异常事件,可以生成一个异常类对象,该异常对象封装了异常事件的信息并将被其提交给java运行系统,这个过程成为抛出(throw)异常 当java运行时系统接受到异常对象时,会寻找能处理这一异常的代码并把当前异常对象交给其处理,这一过程成为捕获(catch)异常 //一个捕获异常的示例 public class test { public static void main(String args[]) { try { System.out.println(2/0); } catch (ArithmeticException ae) { System.out.print("运行出错!"); } } } 二、异常的分类 Throwable:可被抛出的 Error:系统错误,做自己处理不了的 Exception:自己可以做处理的,可以catch的 RuntimeExpetion

Spring异常处理框架

对着背影说爱祢 提交于 2019-12-26 15:39:19
Spring异常处理框架 初识底层接口类HandlerExceptionResolver HandlerExceptionResolver 是一个处理 Web 程序发生异常时的接口,当异常发生时,需要进行捕获并返回一个友好的ModelAndView给请求用户,可以通过继承AbstractHandlerExceptionResolver来实现。这个接口返回 null 表示让其他异常处理器进行处理,这里由于异常处理链机制,如果不处理异常,就会由 Web 容器将异常返回给客户端(直接将可读性很差的异常信息返回给用户是不推荐的做法)。 接口如下 @Nullable ModelAndView resolveException ( HttpServletRequest request , HttpServletResponse response , @Nullable Object handler , Exception ex ) ; 底层扩展抽象类AbstractHandlerExceptionResolver 当我们需要实现自定义的 HandlerExceptionResolver时,只要通过继承它的抽象类 AbstractHandlerExceptionResolver,覆写 doResolveException方法就可以了。 避免动不动扩展底层,而使用

【统一全局异常处理】3. 全局异常处理ExceptionHandler

天涯浪子 提交于 2019-12-26 11:52:50
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 一、全局异常处理器 ControllerAdvice注解的作用就是监听所有的Controller,一旦Controller抛出CustomException,就会在@ExceptionHandler(CustomException.class)对该异常进行处理。 @ControllerAdvice public class WebExceptionHandler { @ExceptionHandler(CustomException.class) @ResponseBody public AjaxResponse customerException(CustomException e) { if (e.getCode() == CustomExceptionType.SYSTEM_ERROR.getCode()) { //400异常不需要持久化,将异常信息以友好的方式告知用户就可以 //TODO 将500异常信息持久化处理,方便运维人员处理 } return AjaxResponse.error(e); } @ExceptionHandler(Exception.class) @ResponseBody public AjaxResponse exception(Exception e) { //TODO

【统一全局异常处理】2. 自定义异常和相关数据结构

故事扮演 提交于 2019-12-26 11:19:35
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 一、该如何设计数据结构 CustomException 自定义异常。核心要素:异常错误编码(200正常,400,500),异常错误信息message。 ExceptionTypeEnum 枚举异常分类,将异常分类固化下来,防止开发人员思维发散。 核心要素 异常分类编码(200正常,400,500),异常分类描述。 AjaxResponse 用于响应Ajax请求。核心要素:是否请求成功 isok;响应code零与非零,零表示成功(200,400,500);响应成功与否信息描述message;响应成功的数据data。 error.html 另外还需要有一个统一处理CustomException的地方。即@ControllerAdvice和@ExceptionHandler 二、自定义异常及自定义响应数据结构 异常分类的枚举,把异常分类固化下来 public enum CustomExceptionType { /** * 定义异常 */ USER_INPUT_ERROR(400, "用户输入异常"), SYSTEM_ERROR(500, "系统服务异常"), OTHER_ERROR(999, "其他未知异常"); CustomExceptionType(int code, String typeDesc) {

Java异常处理总结

吃可爱长大的小学妹 提交于 2019-12-26 11:13:10
转自:http://blog.51cto.com/lavasoft/18920 Java异常处理总结 异常处理是程序设计中一个非常重要的方面,也是程序设计的一大难点,从C开始,你也许已经知道如何用if...else...来控制异常了,也许是自发的,然而这种控制异常痛苦,同一个异常或者错误如果多个地方出现,那么你每个地方都要做相同处理,感觉相当的麻烦! Java语言在设计的当初就考虑到这些问题,提出异常处理的框架的方案,所有的异常都可以用一个类型来表示,不同类型的异常对应不同的子类异常(这里的异常包括错误概念),定义异常处理的规范,在1.4版本以后增加了异常链机制,从而便于跟踪异常!这是Java语言设计者的高明之处,也是Java语言中的一个难点,下面是我对Java异常知识的一个总结,也算是资源回收一下。 一、Java异常的基础知识 异常是程序中的一些错误 ,但并不是所有的错误都是异常,并且错误有时候是可以避免的。比如说,你的代码少了一个分号,那么运行出来结果是提示是错误java.lang.Error;如果你用System.out.println(11/0),那么你是因为你用0做了除数,会抛出java.lang.ArithmeticException的异常。 有些异常需要做处理,有些则不需要捕获处理 ,后面会详细讲到。 天有不测风云,人有旦夕祸福,Java的程序代码也如此。在编程过程中

python如何处理异常,让程序不结束继续运行?

泄露秘密 提交于 2019-12-26 10:58:31
下面有两种解决方法,第一种是类似if…else…;另外一种是使用语句来实现继续执行; 方法一:使用try…except…语句,类似于if…else…,可以跳过异常继续执行程序,这是Python的优势 用法如下: 方法二:使用语句来继续执行; 拓展资料 异常处理特点: 1.在应用程序遇到异常情况(如被零除情况或内存不足警告)时,就会产生异常。 2.发生异常时,控制流立即跳转到关联的异常处理程序(如果存在)。 3.如果给定异常没有异常处理程序,则程序将停止执行,并显示一条错误信息。 4.可能导致异常的操作通过 try 关键字来执行。 5.异常处理程序是在异常发生时执行的代码块。在 C# 中,catch 关键字用于定义异常处理程序。 6.程序可以使用 throw 关键字显式地引发异常。 7.异常对象包含有关错误的详细信息,其中包括调用堆栈的状态以及有关错误的文本说明。 8.即使引发了异常,finally 块中的代码也会执行,从而使程序可以释放资源。 参考文章1:python 如何跳过异常继续执行 参考文章2:Intel Realsense D435 当摄像头运行过程中突然USB线断开,对RuntimeError: Frame didn’t arrived within 5000的异常捕获及处理 来源: CSDN 作者: Dontla 链接: https://blog.csdn.net

【统一全局异常处理】1. 如何设计异常处理

混江龙づ霸主 提交于 2019-12-26 10:41:01
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 面向相关方友好 后端开发人员职责单一,只需要将异常捕获并转换为自定义异常一直对外抛出。不需要去想页面跳转404,以及异常响应的数据结构的设计。 面向前端人员友好,后端返回给前端的数据应该有统一的数据结构,统一的规范。不能一个人一个响应的数据结构。而在此过程中不需要后端开发人员做更多的工作,交给全局异常处理器去处理“异常”到“响应数据结构”的转换。 面向用户友好,用户能够清楚的知道异常产生的原因。这就要求自定义异常,全局统一处理,ajax接口请求响应统一的异常数据结构,页面模板请求统一跳转到404页面。 面向运维友好,将异常信息合理规范的持久化,以便查询。 为什么要将系统运行时异常捕获,转换为自定义异常抛出? 答:因为用户不认识ConnectionTimeOutException类似这种异常是什么东西,但是转换为自定义异常就要求程序员对运行时异常进行一个翻译,比如:自定义异常里面应该有message字段,后端程序员应该明确的在message字段里面用面向用户的友好语言,说明发生了什么。 开发规范 Controller、Service、DAO层拦截异常转换为自定义异常,不允许将异常私自截留。必须对外抛出。 统一数据响应代码,使用httpstatusode,不要自定义。自定义不方便记忆。200请求成功

Java中的异常处理机制

主宰稳场 提交于 2019-12-25 11:09:37
/*--> */ /*--> */ 本文 重 在 Java 中 异 常 机制 的一 些 概念 。 写 本 文 的目 的在 于 方 便 我 很 长 时 间 后 若是忘 了这 些 东 西 可 以 通 过 这 片文章 迅 速 回 忆 起 来 。 1. 异常机制 1 . 1 异常机制是指 当程 序出现 错 误后 , 程 序 如 何 处 理 。 具 体 来 说 , 异 常 机 制提供 了 程序 退出 的 安 全 通 道 。 当 出 现 错误 后 , 程 序 执行 的 流 程 发生 改 变 , 程 序的 控 制 权 转移 到 异 常处 理 器 。 1 . 2 传统的处理异 常的 办法是 ,函 数 返回 一 个 特 殊的结 果 来 表 示出 现 异常 ( 通常 这 个特 殊结 果 是大 家 约定 俗 称的 ) , 调用该函 数 的程 序 负 责 检查 并 分析 函 数返 回 的 结 果 。 这 样做有 如下 的 弊 端 : 例 如 函 数 返 回 -1 代 表 出 现 异 常 ,但 是 如果 函 数 确 实 要 返回 -1 这 个正 确 的 值 时 就会 出 现 混 淆 ; 可 读 性 降 低 , 将 程 序 代 码与 处 理 异 常的 代 码 混 爹在一起 ; 由 调用 函 数 的程 序 来分 析 错 误 , 这 就 要 求 客 户程 序 员 对 库 函 数 有 很 深 的了解 。 1 . 3

Java异常

大城市里の小女人 提交于 2019-12-25 11:09:25
1. 异常机制 异常机制是指当程序出现错误后,程序如何处理。具体来说,异常机制提供了程序退出的安全通道。当出现错误后,程序执行的流程发生改变,程序的控制权转移到异常处理器。传统的处理异常的办法是,函数返回一个特殊的结果来表示出现异常(通常这个特殊结果是大家约定俗称的),调用该函数的程序负责检查并分析函数返回的结果。这样做有如下的弊端:例如函数返回-1代表出现异常,但是如果函数确实要返回-1这个正确的值时就会出现混淆;可读性降低,将程序代码与处理异常的代码混爹在一起;由调用函数的程序来分析错误,这就要求客户程序员对库函数有很深的了解。 2 异常的分类 异常的分类: ① 异常的继承结构:基类为Throwable,Error和Exception继承Throwable,RuntimeException和IOException等继承Exception,具体的RuntimeException继承RuntimeException。 ② Error和RuntimeException及其子类成为未检查异常(unchecked),其它异常成为已检查异常(checked)。 每个类型的异常的特点 Error体系 : Error类体系描述了Java运行系统中的内部错误以及资源耗尽的情形。应用程序不应该抛出这种类型的对象(一般是由虚拟机抛出)。如果出现这种错误,除了尽力使程序安全退出外

java异常处理

此生再无相见时 提交于 2019-12-25 11:08:46
1. 异常机制 异常机制是指当程序出现错误后,程序如何处理。具体来说,异常机制提供了程序退出的安全通道。当出现错误后,程序执行的流程发生改变,程序的控制权转移到异常处理器。 传统的处理异常的办法是,函数返回一个特殊的结果来表示出现异常(通常这个特殊结果是大家约定俗称的),调用该函数的程序负责检查并分析函数返回的结果。这样做有如下的弊端:例如函数返回-1代表出现异常,但是如果函数确实要返回-1这个正确的值时就会出现混淆;可读性降低,将程序代码与处理异常的代码混爹在一起;由调用函数的程序来分析错误,这就要求客户程序员对库函数有很深的了解。 异常处理的流程: ① 遇到错误,方法立即结束,并不返回一个值;同时,抛出一个异常对象 。 ② 调用该方法的程序也不会继续执行下去,而是搜索一个可以处理该异常的异常处理器,并执行其中的代码 。 2 异常的分类 异常的分类: ① 异常的继承结构:基类为Throwable,Error和Exception继承Throwable,RuntimeException和IOException等继承Exception,具体的RuntimeException继承RuntimeException。 ② Error和RuntimeException及其子类成为未检查异常(unchecked),其它异常成为已检查异常(checked)。 每个类型的异常的特点 Error体系