-
2022-05-23 21:31:03
下文笔者讲述使用java代码定义一个自定义异常的方法分享,如下所示:
在日常开发中,有些业务逻辑对应的异常类,系统并未进行定义,那么此时就需要我们自定义异常类进行实现,下文笔者将讲述自定义异常类的方法,如下所示:自定义异常类需满足以下条件: 1.自定义一个编译期异常:自定义类并继承于java.lang.Exception。 2.自定义一个运行时期的异常类:自定义类并继承于java.lang.RuntimeException。 定义一个异常类 /* 顶层类:Throwable 异常类: 1.Exception(提前处理) 2.RuntimeException(出现问题后在处理) 自定义异常类,仅需要提供两个构造方法集合(无参,有参) */
public class RegisterException extends Exception { public RegisterException() { super(); } public RegisterException(String message) { super(message); } } public class TestRegisterException { /** * java265.com 示例程序 */ public static void main(String[] args) { throw new RegisterException("抛出用户自定义异常!"); } }
更多相关内容 -
Java自定义异常
2020-12-22 16:41:21虽说Java类库已经提供很多可以直接处理异常的类,但是有时候为了更加地捕获和处理异常以呈现更好的用户体验,需要开发者自定义异常。本文是探讨如何自定义异常以及使用自定义的异常。 在进行程序开发的过程中,... -
JAVA 自定义异常 全局捕获
2018-12-04 15:03:03自己编写异常类型 ,自定义错误异常进行全局捕捉。实现项目全局的拦截定义输出。。。 -
Java自定义异常类的实例详解
2020-08-29 07:48:13主要介绍了Java自定义异常类的实例详解的相关资料,希望通过本文能帮助到大家,让大家学习理解掌握这部分内容,需要的朋友可以参考下 -
Java异常学习之自定义异常详解
2020-08-30 04:56:29你的程序总有一天会崩溃掉,在崩溃掉的时候我们要知道它在哪,为了什么而崩溃掉,数据的保存或者...下面这篇文章主要给大家介绍了关于Java异常学习之自定义异常的相关资料,需要的朋友可以参考借鉴,下面来一起看看吧。 -
Java如何自定义异常打印非堆栈信息详解
2020-08-27 16:23:55主要给大家介绍了关于Java如何自定义异常打印非堆栈信息的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。 -
Java抛出异常与自定义异常类应用示例
2020-08-26 06:08:05主要介绍了Java抛出异常与自定义异常类,结合实例形式分析了Java针对错误与异常处理的try、catch、throw等语句相关使用技巧,需要的朋友可以参考下 -
Java自定义异常类
2022-06-16 17:53:053.Java以面向对象的方法来处理异常的;Java提供了各种类型的异常类。1.程序运行若发生异常,就会触发能被监听捕获的异常事件,该事件的处理程序会生成一个异常对象并交给JVM,有JVM查找相应的代码处理该异常。2.生成...一、异常处理机制
1.异常概念
1.异常是程序在运行中由于算法问或软件设计等问题导致的程序异常事件。
2.异常的前提是可以识别并被捕获的。
3.Java以面向对象的方法来处理异常的;Java提供了各种类型的异常类。
2.异常的产生过程
1.程序运行若发生异常,就会触发能被监听捕获的异常事件,该事件的处理程序会生成一个异常对象并交给JVM,有JVM查找相应的代码处理该异常。
2.生成异常对象并将其交给JVM的过程称为捕获异常。
3.异常本身作为一个对象,即产生一个异常就是产生一个异常对象;异常对象可能由应用程序本身产 生,也可能由JVM产生,这取决于异常的种类。
3.异常的本质
1.每个异常类都代表一种运行错误,类中包含错误信息及错误处理的方法等内容。
2.异常本质上是一个程序运行时发生的事件,该事件将导致程序的运行中断;尽管如此,在处理异常的代码中可以调整程序运行的方向,使程序仍可继续执行。
4.异常的处理
程序产生异常,系统捕获异常,程序员编写异常处理程序。
二、异常处理类
1.在 Java 中,Throwable 类是 Java 语言中所有错误或异常的超类,它有两个直接子类:Error和Exception。
2.Error类及其子类代表了程序运行时Java系统内部的错误,程序设计者无能为力,程序也不能从Error中恢复,因此不必处理它们,从技术上讲Error不是异常。
3.Exception类及其子类代表了用户程序能够捕捉到的异常,因此应该是程序设计者要关心的、尽可能要处理的部分。
三、异常的处理
1.异常的产生
1.当某些内部错误发生时Java jvm可以产生异常 ,但这些异常不在你的控制范围以内,通常程序不会处理这些异常的。
2.由代码中的错误,如除以零或数组索引越界等导致的标准异常, 这种异常需要程序开发人员来处理。
3.通过使用throw语句无论异常是如何产生的,处理异常的方式都是一样的 。
2.使用try-catch-finally捕获和处理异常
try{
要检查的语句序列:可能要抛出异常的代码
} catch(异常类名 形参对象名){
异常发生时处理的语句序列
} finally {
无论是否产生异常,都要执行这部分语句
}
3.多异常的处理
1.多异常需要程序设计者熟悉各类异常。初学者在不熟悉各种异常类的情况下可以使用Exception类。
2.多异常的处理思想与switch-case结构非常类似。
四、抛出异常
1.抛出异常
1.在捕获异常之前,必须有一段代码生成并抛出一个异常对象。
2.异常类型不同,抛出异常的方法也不同,分为:系统自动抛出的异常、指定方法抛 出的异常。
3.系统定义的异常由系统抛出;指定方法抛出的异常需使用关键字throw或throws;
2.由方法抛出的异常用法
1.抛出异常的方法与调用方法处理异常
1.异常的产生和处理可以在一个方法内进行;
2.异常的产生和处理也可以不在一个方法中,即一个方法产生异常,由该方法的调用者去处理异常。
3.异常有关的方法
1.抛出异常的方法
1.在方法体内使用throw抛出异常:throw 由异常类产生的对象;
2.在方法头部添加throws抛出异常:
[修饰符] 返回值类型 方法名([参数列表]) throws 异常列表{
… …
}
上述两种方式抛出异常,在该方法内就不必提供try-catch-finally 块去处理异常,有调用者的程序处理。
2.处理异常的方法
如果程序设计者调用了一个会抛出异常的方法,要么处理这个异常,要么将异常继续抛出。
4.由方法抛出的异常交给系统处理
1.Java 对 Exception 类中的异常可分为受检查型异常和非检查型异常两大类。
2.所有非检查型异常都是RuntimeException类的子类,Java编译器对非检 查型异常不要求进行捕获和处理也能通过编译;而对不是RuntimeException类子类的异常则都是受检查型异常,即如方法 抛出这类异常,调用者必须处理该异常。
3.对于受检查型异常,如果调用者不处理,则必须在最后的 main 方法中将 异常提交给系统。
五、自定义异常类
自定义的异常类一般步骤:
1.自定义异常类要继承于Exception类或其子类,或其它异常类。
2.为自定义异常类声明字段(属性)成员、方法成员或重写父类的字段和方法。
3.自定义异常类至少要定义两个构造方法:一个是无参的;另外一个是带 String参数的,目的是将此字符串传递给父构造方法,同时这个String的 信息作为该异常对象的描述信息。
4.最后,起一个能标识异常情况的有意义的名字。
-
Java如何实现自定义异常类
2020-08-25 02:21:37主要介绍了Java如何实现自定义异常类,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 -
java自定义异常并处理异常
2022-05-31 11:08:31java自定义异常并处理异常 统一处理异常 自定义异常不报错自定义异常:
/** * 自定义异常 * * @author ruoyi */ @Data public final class MyException extends RuntimeException { private Integer status = ExceptionCode.SERVICEEXCEPTION.getCode(); public MyException() { } public MyException(ExceptionCode status,String message) { super(status.getCode()+"&"+message); this.status = status.getCode(); } public MyException(Throwable cause) { super(cause); } public MyException(String message, Throwable cause) { super(message, cause); } public MyException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) { super(message, cause, enableSuppression, writableStackTrace); } }
/** * 自定义异常状态 * * @author ruoyi */ public enum ExceptionCode { TOKENEXCEPTION(40000),//登录TOKEN异常 SERVICEEXCEPTION(41000),//业务异常(包括参数) AUTHEXCEPTION(42000);//权限异常 private final Integer code; ExceptionCode(Integer code) { this.code = code; } public Integer getCode() { return code; } }
自定义异常处理:
/** * 自定义异常处理 */ @ControllerAdvice @Slf4j public class MyExceptionHandler { @org.springframework.web.bind.annotation.ExceptionHandler(Exception.class) public void handleException(HttpServletRequest request, HttpServletResponse response, Exception ex) { //返回给前端的信息 Map<String, Object> map = new HashMap<String, Object>(); String message = ex.getMessage(); Integer status = 500; if(ex.getClass().equals(MyException.class)){ //是自定义异常 String[] str = message.split("&"); status = MyUtil.convertToInt(str[0], 500); message = str[1]; }else{ message = "系统错误"; } if (status.equals(500)) { System.out.println("非业务异常,请查看错误日志"); log.error(MyExceptionUtil.getExceptionAllinformation(ex)); } else { System.out.println("错误" + status + ":" + message); } map.put("status", status); map.put("message", message); request.setAttribute("errorMap", map); response.setHeader("Content-Type", "application/json"); response.setStatus(403); MyUtil.writeObjectToClient(map, response); } }
/** * 异步传输Json数据 * * @param obj * @param response * @throws JsonGenerationException * @throws JsonMappingException * @throws IOException * @author wzd * @description * @date 2013-2-28 */ public static void writeObjectToClient(Object obj, HttpServletResponse response) { String jsonStr = JSON.toJSONString(obj); response.setCharacterEncoding("UTF-8"); response.setContentType("text/html;charset=UTF-8"); try { response.getWriter().print(jsonStr); } catch (IOException e) { e.printStackTrace(); } } /** * 获得异常的字符串形式信息 * @param e 要打印的异常 * @return */ public static String getExceptionAllinformation(Exception e) { ByteArrayOutputStream out = new ByteArrayOutputStream(); PrintStream pout = new PrintStream(out); e.printStackTrace(pout); String ret = new String(out.toByteArray()); pout.close(); try { out.close(); } catch (Exception e1) { e1.printStackTrace(); } return ret; }
结束:
这样只要
throw new MyException(ExceptionCode.SERVICEEXCEPTION,"");
就能返回异常信息给前端了,前端就能统一进行异常处理了。
-
JAVA自定义异常处理
2022-03-16 22:51:10自定义异常处理可以分为两种,一种是自定义编译处理,另一种是自定义运行处理 1.自定义编译处理需要创建一个异常类用于继承Exception类 重写构造器 在出现异常的地方用throw new 自定义对象抛出 作用:编译时异常时... -
java 自定义异常-编译异常和运行异常
2022-04-08 20:48:13java 自定义异常--编译异常和运行异常2种;Java异常机制可以保证程序更安全和更健壮。虽说Java类库已经提供很多可以直接处理异常的类,但是有时候为了更加地捕获和处理异常以呈现更好的用户体验,需要开发者自定义... -
Java-CustomExceptions:Java 自定义异常
2021-06-28 18:51:51Java 自定义异常Java 自定义异常以下是创建自定义异常的两个不同示例。 有更多方法可以做到这一点,但这里是(可以说)我遇到的最简单的方法。 -
【Java】自定义异常和异常中的方法覆盖注意事项
2021-01-20 03:15:58自定义异常1.1 定义方式1.2 自定义异常的抛出1.3 自定义异常的捕获2. 异常中的方法覆盖 1. 自定义异常 1.1 定义方式 ① 必须继承自Exception或Exception的子类,常用RuntimeException ② 必须提供无参构造方法; ③... -
java自定义异常之用户登录
2018-03-16 22:49:53java自定义异常类之用户登录,帮助大家更好的理解之定义异常。 -
JAVA自定义异常类
2017-04-27 09:38:21java基本语法,自定义异常类 -
java自定义异常打印内容详解
2020-08-25 11:51:28主要为大家详细介绍了java自定义异常打印内容的相关资料,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 -
Java 自定义异常和抛出异常
2017-06-14 14:19:55Java 自定义异常和抛出异常的练习demo -
java 自定义异常错误编码
2022-06-01 09:17:48书写java代码的时候会用到统一的异常错误编码,这里为大家介绍一下我的自定义异常错误编码。 -
Java 自定义异常类
2021-03-05 13:06:51类1:public class LogicException extends RuntimeException {//业务逻辑异常/**** @param message 异常信息*/public LogicException(String message) {super(message);}/**** @param message 异常信息* @param ... -
java自定义异常报错
2022-02-09 12:08:20public class TeamException extends Exception{ static final long serialVersionUID = -3387516993124229948L; public TeamException() { super(); } public TeamException(String message) { ... -
java 自定义异常
2015-07-21 09:52:11java自定义异常,java自定义异常的介绍,如何创建自定义异常,如何使用自己创建的自定义异常。 -
Java 自定义异常(转载)
2021-02-26 15:11:31非运行时异常(Checked Exception)Java中凡是继承自Exception但不是继承自RuntimeException的类都是非运行时异常。2. 运行时异常(Runtime Exception/Unchecked Exception)RuntimeException类直接继承自Exception类,...