在Java的一些项目中,在需要提供对外接口时,常常会有必要自定义响应一些code和message(例:0000:Success,500:Error),特别是在对接移动端项目中最为常见。为更加方便提供这些接口的程序员的开发,可以应用Java的自定义异常处理来实现。
现有一移动端应用,需要对接我们项目,其中有一个用户登录接口,其接口的请求和响应参数如下:
申请参数 |
|
||
字段名 |
描述 |
允许为空 |
备注 |
username |
用户名 |
N |
|
password |
密码 |
N |
|
…… |
|
|
返回数据 |
|
||
字段名 |
描述 |
允许为空 |
备注 |
code |
响应码 |
N |
|
message |
响应信息 |
N |
|
username |
用户名 |
N |
|
…… |
|
|
制定一套响应信息库,创建code.properties来存储响应信息库:
code0000=0000
msg0000=成功
code500=500
msg500=失败
code0001=0001
msg0001=用户名不能为空
code0002=0002
msg0002=密码不能为空
code0003=0003
msg0003=用户名或密码不正确
在这里,约定前缀是code和msg,后面带的内容(例0000)一定要与其对应的code值相同。
接下来编写自定义异常处理:
先创建一个响应信息对象ResponseData.java
public class ResponseData { public static final String CODE = "code"; public static final String MSG = "msg"; private String code; private String msg; public ResponseData() {} public ResponseData(String code) { this.setCode(code); } public String getCode() { return code; } public void setCode(String code) { this.code = CODE+code; this.msg = PropertiesUtil.get("code", MSG+code); } public String getMsg() { return msg; } public void setMsg(String msg) { this.msg = msg; } }
读取资源文件的工具类
public class PropertiesUtil { private static Properties prop = new Properties(); public static String get(String fileName, String key){ try { prop.load(PropertiesUtil.class.getClassLoader().getResourceAsStream(fileName+".properties")); } catch (IOException e) { new RuntimeException("不存在此("+fileName+")资源文件!"); } return prop.getProperty(key); } }
最后创建一个自定义异常类MyException.java
public class MyException extends RuntimeException { private String name; private ResponseData data; public MyException(ResponseData data) { super(data.getMsg()); this.data = data; } public MyException(String name, ResponseData data) { super(name+":"+data.getMsg()); this.name = name; this.data = data; } public String getName() { return name; } public void setName(String name) { this.name = name; } public ResponseData getData() { return data; } public void setData(ResponseData data) { this.data = data; } }
至此,自定义异常处理相关代码就编写完成。
接下看看它的应用:
public void testException() { try { String username = "admin",password = "111111";//充当请求参数 //1、验证请求参数 checkParams(username,password); //2、验证通过,响应user信息 responseClient(username); } catch (MyException e) { responseClient(e.getData()); } catch (Exception e) { responseClient(new ResponseData("500")); } } private void responseClient(String username) { responseClient(new ResponseData("0000")); System.out.println(username); } private void responseClient(ResponseData data) { System.out.println(data.getCode()+":"+data.getMsg()); } private void checkParams(String username, String password) { if(StringUtils.isEmpty(username)) throw new MyException(new ResponseData("0001")); if(StringUtils.isEmpty(password)) throw new MyException(new ResponseData("0002")); if(!USERNMAE.equals(username) || !PASSWORD.equals(password)) throw new MyException(new ResponseData("0003")); }
这样做的好处就是可以将代码分块,当需要提供更复杂的接口时,可以更加清晰地写下处理流程;而且你会发现做一些参数或流程验证的时候,不再需要if...else...了,代码简单优美。
相关推荐
综上所述,Java自定义异常允许开发者创建符合应用需求的异常类型,提高代码的可读性和可维护性。通过理解异常的继承体系,编写自定义异常类,以及正确地抛出和处理异常,我们可以构建更加健壮和易用的Java应用程序。
下面我们将深入探讨Java自定义异常及其应用。 首先,自定义异常通常是通过扩展Java内置的`Exception`类或其子类来实现的。`Exception`类是所有可抛出异常的基类,它本身继承自`Throwable`类。创建自定义异常时,...
总结一下,Java自定义异常是通过创建新的异常类来实现的,这些类通常继承自`Exception`类或其子类。自定义异常可以包含特定的错误信息,并在遇到预期之外的情况时抛出。通过使用自定义异常,开发者可以更好地组织和...
### JAVA自定义异常类 #### 一、基本概念与应用场景 在Java编程中,异常处理是一种重要的机制,用于处理程序运行时可能出现的各种错误情况。Java提供了丰富的内置异常类,但有时候,内置的异常类可能不足以精确地...
### Java自定义异常类详解 #### 一、Java异常体系概览 在Java语言中,异常处理机制是一种用于处理程序运行时错误的重要机制。Java中的异常处理基于`java.lang.Throwable`类,它有两个重要的子类:`Exception`和`...
自定义异常是Java异常处理机制中的一个重要组成部分,其在教学和实际软件开发中的重要性不容忽视。 首先,了解自定义异常出现的背景是必要的。Java的标准异常库为开发者提供了丰富的异常类,例如空指针异常、数组...
在实际应用中,自定义异常和抛出异常常常结合使用。例如,你可能会在业务逻辑层创建自定义异常,然后在该层的代码中抛出这些异常,以便在更上层的控制器或服务中进行捕获和处理。这有助于保持代码的清晰性和模块化。...
自定义异常是指在实际应用中,Java 提供的异常类不能够捕获的异常时,需要用户自定义异常。用户自定义异常可以满足实际应用中的需求,提高程序的交互性和完整性。 Java 异常处理的重要性 Java 异常处理的重要性...
课后练习通常包括针对自定义异常类的实战应用,例如编写不同场景的异常处理代码,模拟业务中的错误情况,以及设计和解答相关的笔试题。通过这些练习,可以加深对自定义异常理解和使用方法的掌握。 ### 三、小结与小...
本文将深入探讨Java自定义异常及其在实际代码中的应用。 首先,Java异常是通过`Exception`类或其子类来表示的。当程序中出现非正常情况时,可以抛出一个异常对象。Java提供了丰富的预定义异常类,如`IOException`, ...
Java 中的自定义异常是一种特殊的异常类型,由用户自己定义和抛出,而不是由Java语言系统自动监测到的异常。自定义异常可以让开发者更加灵活地处理异常情况,提高程序的健壮性和可靠性。 是什么 Java 中的自定义...
### Java自定义异常类知识点详解 #### 一、概述 在Java编程中,自定义异常是一种常见的编程实践,它能够帮助开发者更精确地控制程序的行为并处理错误情况。通过创建自定义异常类,我们可以根据应用的具体需求来抛...
如果这个组件支持异常处理,那么开发者可能会在自定义异常上下文中使用它,例如,当用户在界面上输入无效数据时抛出自定义异常。 总结来说,自定义异常是软件开发中的重要实践,它允许我们定制错误处理策略,使代码...
### Java自定义异常详解 #### 一、Java异常机制简介 在Java中,异常处理是一种用来可靠地处理程序运行时错误的重要机制。它允许程序员通过`try`、`catch`和`finally`等关键字来组织代码,从而有效地处理程序执行...
Java自定义线程模型在软件开发中扮演着重要的角色,特别是在高性能、高并发的应用场景,如游戏服务器。本文将深入探讨如何在Java中构建自定义线程模型,并分享一些实践经验。 首先,我们要明白为什么要自定义线程...
在实际应用中,我们可能还需要重写`toString()`方法,以便于打印或显示复数的值: ```java @Override public String toString() { return real + " + " + imaginary + "i"; } ``` 此外,为了提高代码的可读性和可...
在Java编程中,集合框架是不可或缺的一部分...在实际应用中,自定义集合类可以提高代码的可读性、可维护性和性能。通过理解和掌握如何创建自定义集合,开发者能够更好地应对各种复杂的编程挑战,提供更高效的解决方案。
- 在实际应用中,往往需要在异常对象中携带更多的信息,例如导致异常的具体原因等。 - 可以通过在自定义异常类中添加成员变量和构造方法来实现。 - 示例:为`CustomerExistsException`添加一个成员变量`...
以下是一些关于Java自定义异常的重要知识点: 1. **异常基础**:在Java中,异常是一种特殊的对象,用于表示程序运行时遇到的问题。Java使用`Exception`类作为所有异常的基类。当程序遇到错误时,会抛出一个异常,这...
在本例中,`finally` 仅输出了一条信息,但在实际应用中,它可能包含关闭文件流、数据库连接等操作。 6. **总结** - 自定义异常通过创建新的异常类实现,这些类通常继承自 `Exception` 或其子类。 - 在可能抛出...