`
Javahuhui
  • 浏览: 77608 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Java自定义异常在项目中的应用

    博客分类:
  • Java
阅读更多

在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《面向对象程序设计》实验报告六

    自定义异常类MyException,该类继承自Exception类,类中只有含一个字符串参数msg的构造方法,构造方法中只有一条语句super(msg)——调用父类的构造方法。另外,编写自定义类person,类中只有两个私有的变量,一个是...

    Java异常处理在生活中的实际应用:电子邮箱注册验证.txt

    这个示例代码展示了Java异常处理的用法,通过自定义异常类和异常抛出机制,实现了对电子邮箱注册过程中的异常情况进行处理。它模拟了生活中的实际应用场景,提供了一种处理异常情况的方法,以保证系统的稳定性和用户...

    Java抛出异常与自定义异常类应用示例

    主要介绍了Java抛出异常与自定义异常类,结合实例形式分析了Java针对错误与异常处理的try、catch、throw等语句相关使用技巧,需要的朋友可以参考下

    java实验报告.docx

    Java 自定义异常的程序设计 13 实验七 Java 多线程程序设计应用 1 实验八 Java 泛型程序设计应用 5 实验九 Java 常用类库的应用 8 实验十 Java 标准输入/输出流的程序设计;文件读/写的程序设计应用 12 实验十一 ...

    JAVA上百实例源码以及开源项目源代码

     Java 3DMenu 界面源码,有人说用到游戏中不错,其实平时我信编写Java应用程序时候也能用到吧,不一定非要局限于游戏吧,RES、SRC资源都有,都在压缩包内。 Java zip压缩包查看程序源码 1个目标文件 摘要:Java源码...

    Android Crash Helper。安卓APP自定义异常处理器.zip

    软件开发设计:PHP、QT、应用软件开发、系统软件开发、移动应用开发、网站开发C++、Java、python、web、C#等语言的项目开发与学习资料 硬件与设备:单片机、EDA、proteus、RTOS、包括计算机硬件、服务器、网络设备、...

    JAVA上百实例源码以及开源项目

     Java 3DMenu 界面源码,有人说用到游戏中不错,其实平时我信编写Java应用程序时候也能用到吧,不一定非要局限于游戏吧,RES、SRC资源都有,都在压缩包内。 Java zip压缩包查看程序源码 1个目标文件 摘要:Java源码...

    经典JAVA.EE企业应用实战.基于WEBLOGIC_JBOSS的JSF_EJB3_JPA整合开发.pdf

    所使用的应用服务器是jboss 5.1和weblogic 11g,详细介绍了这两种应用服务器的安装和使用,以及如何在两大主流服务器上安装、部署java ee应用。  本书内容主要包括三部分,第一部分介绍java ee开发的基础知识,...

    java源码包---java 源码 大量 实例

     Java 3DMenu 界面源码,有人说用到游戏中不错,其实平时我信编写Java应用程序时候也能用到吧,不一定非要局限于游戏吧,RES、SRC资源都有,都在压缩包内。 Java zip压缩包查看程序源码 1个目标文件 摘要:Java源码...

    oracle异常(预定义异常,自定义异常)应用介绍

    在开发过程中,经常会遇到一些测试,这时候就会想了解测试的过程,然后再根据过程分析代码错在哪里,这种情况下,就需要用到自定义异常,需要了解的朋友可以参考本文先声明一个异常 Java代码 biz_exception ...

    java源码包2

     Java 3DMenu 界面源码,有人说用到游戏中不错,其实平时我信编写Java应用程序时候也能用到吧,不一定非要局限于游戏吧,RES、SRC资源都有,都在压缩包内。 Java zip压缩包查看程序源码 1个目标文件 摘要:Java...

    Java语言程序设计实验指导书

    6 异常 编程实现处理异常的语句,理解处理与抛出的区别,学会自定义异常。 7 Java流 用输入输出流实现从一个文本文件中读写简单数据。 8 泛型与容器 编程实现set、list与map的简单应用。 9 图形用户界面 用图形...

    java源码包4

     Java 3DMenu 界面源码,有人说用到游戏中不错,其实平时我信编写Java应用程序时候也能用到吧,不一定非要局限于游戏吧,RES、SRC资源都有,都在压缩包内。 Java zip压缩包查看程序源码 1个目标文件 摘要:Java...

    java源码包3

     Java 3DMenu 界面源码,有人说用到游戏中不错,其实平时我信编写Java应用程序时候也能用到吧,不一定非要局限于游戏吧,RES、SRC资源都有,都在压缩包内。 Java zip压缩包查看程序源码 1个目标文件 摘要:Java...

    Java开发技术大全(500个源代码).

    useMyException.java 使用自定义异常 第7章 示例描述:本章学习Java的输入和输出。 CopyFile.java 文件复制实例 dir.java 显示目录下的所有文件和目录 encrypt.java 文件加密 FileList.java 自己实现的一个...

    Java语音学习,基础教程

    掌握异常处理:了解Java的异常体系、异常分类,学会声明、抛出和捕获异常,并自定义异常。 初步掌握多线程:理解线程的概念,线程同步和Lock的用法,以及线程的生命周期。 以上这些是Java语言学习的主要内容,当然也...

    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....

Global site tag (gtag.js) - Google Analytics