`
Javahuhui
  • 浏览: 80868 次
  • 性别: 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自定义异常源代码

    综上所述,Java自定义异常允许开发者创建符合应用需求的异常类型,提高代码的可读性和可维护性。通过理解异常的继承体系,编写自定义异常类,以及正确地抛出和处理异常,我们可以构建更加健壮和易用的Java应用程序。

    java 自定义异常实例二

    下面我们将深入探讨Java自定义异常及其应用。 首先,自定义异常通常是通过扩展Java内置的`Exception`类或其子类来实现的。`Exception`类是所有可抛出异常的基类,它本身继承自`Throwable`类。创建自定义异常时,...

    java 自定义异常实例一

    总结一下,Java自定义异常是通过创建新的异常类来实现的,这些类通常继承自`Exception`类或其子类。自定义异常可以包含特定的错误信息,并在遇到预期之外的情况时抛出。通过使用自定义异常,开发者可以更好地组织和...

    JAVA自定义异常类

    ### JAVA自定义异常类 #### 一、基本概念与应用场景 在Java编程中,异常处理是一种重要的机制,用于处理程序运行时可能出现的各种错误情况。Java提供了丰富的内置异常类,但有时候,内置的异常类可能不足以精确地...

    Java自定义异常类_1.txt

    ### Java自定义异常类详解 #### 一、Java异常体系概览 在Java语言中,异常处理机制是一种用于处理程序运行时错误的重要机制。Java中的异常处理基于`java.lang.Throwable`类,它有两个重要的子类:`Exception`和`...

    浅谈Java自定义异常在教学中的教与学

    自定义异常是Java异常处理机制中的一个重要组成部分,其在教学和实际软件开发中的重要性不容忽视。 首先,了解自定义异常出现的背景是必要的。Java的标准异常库为开发者提供了丰富的异常类,例如空指针异常、数组...

    Java 自定义异常和抛出异常

    在实际应用中,自定义异常和抛出异常常常结合使用。例如,你可能会在业务逻辑层创建自定义异常,然后在该层的代码中抛出这些异常,以便在更上层的控制器或服务中进行捕获和处理。这有助于保持代码的清晰性和模块化。...

    Java异常处理与自定义异常.pdf

    自定义异常是指在实际应用中,Java 提供的异常类不能够捕获的异常时,需要用户自定义异常。用户自定义异常可以满足实际应用中的需求,提高程序的交互性和完整性。 Java 异常处理的重要性 Java 异常处理的重要性...

    Java异常处理-自定义异常类及课后练习

    课后练习通常包括针对自定义异常类的实战应用,例如编写不同场景的异常处理代码,模拟业务中的错误情况,以及设计和解答相关的笔试题。通过这些练习,可以加深对自定义异常理解和使用方法的掌握。 ### 三、小结与小...

    Java自定义异常_动力节点Java学院整理

    本文将深入探讨Java自定义异常及其在实际代码中的应用。 首先,Java异常是通过`Exception`类或其子类来表示的。当程序中出现非正常情况时,可以抛出一个异常对象。Java提供了丰富的预定义异常类,如`IOException`, ...

    java 自定义异常(基础)(csdn)————程序.pdf

    Java 中的自定义异常是一种特殊的异常类型,由用户自己定义和抛出,而不是由Java语言系统自动监测到的异常。自定义异常可以让开发者更加灵活地处理异常情况,提高程序的健壮性和可靠性。 是什么 Java 中的自定义...

    Java自定义异常类_2.txt

    ### Java自定义异常类知识点详解 #### 一、概述 在Java编程中,自定义异常是一种常见的编程实践,它能够帮助开发者更精确地控制程序的行为并处理错误情况。通过创建自定义异常类,我们可以根据应用的具体需求来抛...

    自定义异常

    如果这个组件支持异常处理,那么开发者可能会在自定义异常上下文中使用它,例如,当用户在界面上输入无效数据时抛出自定义异常。 总结来说,自定义异常是软件开发中的重要实践,它允许我们定制错误处理策略,使代码...

    java如何自定义异常用代码.doc

    ### Java自定义异常详解 #### 一、Java异常机制简介 在Java中,异常处理是一种用来可靠地处理程序运行时错误的重要机制。它允许程序员通过`try`、`catch`和`finally`等关键字来组织代码,从而有效地处理程序执行...

    java自定义线程模型处理方法分享

    Java自定义线程模型在软件开发中扮演着重要的角色,特别是在高性能、高并发的应用场景,如游戏服务器。本文将深入探讨如何在Java中构建自定义线程模型,并分享一些实践经验。 首先,我们要明白为什么要自定义线程...

    java 自定义复数类

    在实际应用中,我们可能还需要重写`toString()`方法,以便于打印或显示复数的值: ```java @Override public String toString() { return real + " + " + imaginary + "i"; } ``` 此外,为了提高代码的可读性和可...

    java自定义集合类

    在Java编程中,集合框架是不可或缺的一部分...在实际应用中,自定义集合类可以提高代码的可读性、可维护性和性能。通过理解和掌握如何创建自定义集合,开发者能够更好地应对各种复杂的编程挑战,提供更高效的解决方案。

    如何创建和使用自定义异常

    - 在实际应用中,往往需要在异常对象中携带更多的信息,例如导致异常的具体原因等。 - 可以通过在自定义异常类中添加成员变量和构造方法来实现。 - 示例:为`CustomerExistsException`添加一个成员变量`...

    Java 实例 - 自定义异常源代码-详细教程.zip

    以下是一些关于Java自定义异常的重要知识点: 1. **异常基础**:在Java中,异常是一种特殊的对象,用于表示程序运行时遇到的问题。Java使用`Exception`类作为所有异常的基类。当程序遇到错误时,会抛出一个异常,这...

    Java中自定义异常详解及实例代码

    在本例中,`finally` 仅输出了一条信息,但在实际应用中,它可能包含关闭文件流、数据库连接等操作。 6. **总结** - 自定义异常通过创建新的异常类实现,这些类通常继承自 `Exception` 或其子类。 - 在可能抛出...

Global site tag (gtag.js) - Google Analytics