在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...了,代码简单优美。
相关推荐
自定义异常类MyException,该类继承自Exception类,类中只有含一个字符串参数msg的构造方法,构造方法中只有一条语句super(msg)——调用父类的构造方法。另外,编写自定义类person,类中只有两个私有的变量,一个是...
这个示例代码展示了Java异常处理的用法,通过自定义异常类和异常抛出机制,实现了对电子邮箱注册过程中的异常情况进行处理。它模拟了生活中的实际应用场景,提供了一种处理异常情况的方法,以保证系统的稳定性和用户...
主要介绍了Java抛出异常与自定义异常类,结合实例形式分析了Java针对错误与异常处理的try、catch、throw等语句相关使用技巧,需要的朋友可以参考下
Java 自定义异常的程序设计 13 实验七 Java 多线程程序设计应用 1 实验八 Java 泛型程序设计应用 5 实验九 Java 常用类库的应用 8 实验十 Java 标准输入/输出流的程序设计;文件读/写的程序设计应用 12 实验十一 ...
Java 3DMenu 界面源码,有人说用到游戏中不错,其实平时我信编写Java应用程序时候也能用到吧,不一定非要局限于游戏吧,RES、SRC资源都有,都在压缩包内。 Java zip压缩包查看程序源码 1个目标文件 摘要:Java源码...
软件开发设计:PHP、QT、应用软件开发、系统软件开发、移动应用开发、网站开发C++、Java、python、web、C#等语言的项目开发与学习资料 硬件与设备:单片机、EDA、proteus、RTOS、包括计算机硬件、服务器、网络设备、...
Java 3DMenu 界面源码,有人说用到游戏中不错,其实平时我信编写Java应用程序时候也能用到吧,不一定非要局限于游戏吧,RES、SRC资源都有,都在压缩包内。 Java zip压缩包查看程序源码 1个目标文件 摘要:Java源码...
所使用的应用服务器是jboss 5.1和weblogic 11g,详细介绍了这两种应用服务器的安装和使用,以及如何在两大主流服务器上安装、部署java ee应用。 本书内容主要包括三部分,第一部分介绍java ee开发的基础知识,...
Java 3DMenu 界面源码,有人说用到游戏中不错,其实平时我信编写Java应用程序时候也能用到吧,不一定非要局限于游戏吧,RES、SRC资源都有,都在压缩包内。 Java zip压缩包查看程序源码 1个目标文件 摘要:Java源码...
在开发过程中,经常会遇到一些测试,这时候就会想了解测试的过程,然后再根据过程分析代码错在哪里,这种情况下,就需要用到自定义异常,需要了解的朋友可以参考本文先声明一个异常 Java代码 biz_exception ...
Java 3DMenu 界面源码,有人说用到游戏中不错,其实平时我信编写Java应用程序时候也能用到吧,不一定非要局限于游戏吧,RES、SRC资源都有,都在压缩包内。 Java zip压缩包查看程序源码 1个目标文件 摘要:Java...
6 异常 编程实现处理异常的语句,理解处理与抛出的区别,学会自定义异常。 7 Java流 用输入输出流实现从一个文本文件中读写简单数据。 8 泛型与容器 编程实现set、list与map的简单应用。 9 图形用户界面 用图形...
Java 3DMenu 界面源码,有人说用到游戏中不错,其实平时我信编写Java应用程序时候也能用到吧,不一定非要局限于游戏吧,RES、SRC资源都有,都在压缩包内。 Java zip压缩包查看程序源码 1个目标文件 摘要:Java...
Java 3DMenu 界面源码,有人说用到游戏中不错,其实平时我信编写Java应用程序时候也能用到吧,不一定非要局限于游戏吧,RES、SRC资源都有,都在压缩包内。 Java zip压缩包查看程序源码 1个目标文件 摘要:Java...
useMyException.java 使用自定义异常 第7章 示例描述:本章学习Java的输入和输出。 CopyFile.java 文件复制实例 dir.java 显示目录下的所有文件和目录 encrypt.java 文件加密 FileList.java 自己实现的一个...
掌握异常处理:了解Java的异常体系、异常分类,学会声明、抛出和捕获异常,并自定义异常。 初步掌握多线程:理解线程的概念,线程同步和Lock的用法,以及线程的生命周期。 以上这些是Java语言学习的主要内容,当然也...
11.4 自定义异常 161 11.5 巩固练习 162 第12章 常用API之一 164 12.1 java.lang.String 164 12.2 java.lang.StringBuffer 167 12.3 wrapper class 169 12.4 java.lang.Math类 172 12.5 java.Math....