接口服务错误管理(将错误堆栈返回给请求)的实现

在提供服务的时候,为了方便排查问题,很多时候我们需要把错误信息放在返回信息中返回给请求。

闲话不多说,分享下我的一个错误信息管理类ZSGErrorManage:

错误code:

public static enum ERRORCODE{
		ERROR_OK,
		ERROR_OTHER,
		ERROR_PARAM_ILLEGALITY,
		ERROR_UNKNOWN;
	}

获取错误message:

public static String getMsgThroughErrorCode(ERRORCODE errorCode, StackTraceElement[] errorStack){
		if(errorStack != null){
			StringBuffer sBuffer = new StringBuffer();
			for(StackTraceElement stackContent : errorStack){
				sBuffer.append(stackContent.toString());
			}
			return sBuffer.toString();
		} else {
			switch (errorCode) {
			case ERROR_OK:
				return "ERROR_OK";
			case ERROR_OTHER:
				return "ERROR_OTHER";
			case ERROR_PARAM_ILLEGALITY:
				return "ERROR_PARAM_ILLEGALITY";
			default:
				return "ERROR_UNKNOWN";
			}
		}
	}

错误code就是一个枚举类型,没有什么可说的。

获取错误message是通过传入的错误code以及错误stack信息来返回文字式的错误信息。

可以看到,如果stack不为空,那么错误message就是stack的内容;

反之,如果stack为空,那么根据相应的错误code返回具有标志性的错误message

外部调用举例:

protected final ERRORCODE ERROR_OTHER = ZSGErrorManage.ERRORCODE.ERROR_OTHER;
HeroBaseDto result = new HeroBaseDto();
		try {
			HeroInfoService service = (HeroInfoService)getBean("heroInfoService");
			result = service.getHeroBase();
		} catch (Exception e) {
			e.printStackTrace();
			result.setErrorCode(ERROR_OTHER);
			result.setErrorMsg(ZSGErrorManage.getMsgThroughErrorCode(ERROR_OTHER, e.getStackTrace()));
		}

注:

e.getStackTrace() 获取错误stack

e.printStackTrace() 在控制台打印错误stack

希望以上内容会对大家有所帮助,谢谢。

时间: 2024-11-06 14:36:27

接口服务错误管理(将错误堆栈返回给请求)的实现的相关文章

FF.PyAdmin 接口服务/后台管理微框架 (Flask+LayUI)

源码(有兴趣的朋友请Star一下) github: https://github.com/fufuok/FF.PyAdmin gitee: https://gitee.com/fufuok/FF.PyAdmin 初衷 运维开发中, 各类接口服务和后台管理系统必不可少, 索性写个通用的/简单易用的/支持快速开发的微框架. 一是开发时尽可能只关注业务逻辑, 快速实现, 不用再过多考虑架构/前端/布局什么的. 二是将常用业务逻辑二次封装, 使用时, 用简洁的语句即可完成复杂的事务, 并自动处理异常.

nodejs请求静态资源404错误,后台需处理返回http请求的静态资源

nodejs小白在做的demo时后台返回主页面html后,页面请求引用的js文件,后台没有返回对应请求路径的静态资源,所以报错.原来在java开发下没有注意过这种问题,一般除了WEB-INF下的文件不能访问外,其他资源文件都可以直接用http路径访问. 1.使用http模块处理(http模块时nodejs内置模块) public文件夹下的文件js,html默认为静态资源,后台读取这些文件然后返回给前台. 1 var http = require('http'); 2 var fs = requi

C/C++大型项目错误管理

在C/C++大型项目中,错误管理在项目中起着举足轻重的作用,以我自己的项目经验以及观摩其它项目,错误管理对项目框架以及开发效率有着非常大的影响.对于错误管理的认识大致分为三类: 刚刚開始敲代码的新手,满篇程序看不到一处关于返回出错的处理,更不用说出错管理了.说明他没认识到出错管理的重要性 程序中到处都能看到关于出错的处理.认识到了错误,可是处理方式欠缺 程序中差点儿不会非常明显的看到关于错误的处理.这是错误管理的最高境地. 错误管理,涉及到程序的健壮性,可恢复性,可靠性,高效性.在出错的情况下,

安装 SQL SERVER 2008 必须使用 "角色管理工具" 错误 的 解决方案 (转)

刚在服务器(Win2008)上安装SqlServer2008的时候出现了这么一个报错——必须使用“角色管理工具”安装或配置Microsoft .NET Framework 3.5 SP1.一开始以为是没装3.5,后来看了一下服务器上已经装了VS2010了,于是排除这个可能性.Google了一下,于是找到问题的解决方法.(尼玛,最近老是要去服务器上安装和部署各种东西然后就遇到各种问题\("▔□▔)/) 1.问题表现如下,弹出来一提示框:     2.根据提示,先打开角色管理工具.“控制面板”-&g

一个或多个音频服务未运行 win7 错误1079:此服务的账户不同于运行于同一进程上的其他服务账户

一个或多个音频服务未运行 win7 错误1079:此服务的账户不同于运行于同一进程上的其他服务账户 启动任务管理器:右键计算机——管理——”服务和应用程序“选项——”服务“——找到“windows audio”打开属性——“登录”选项——选择“此账户”——浏览——高级-立即查找-local sevice——确定(如果要输入密码的话,先清空再确定).再启动windows audio win7喇叭红叉耳机扬声器已拔出驱动无法修复 win7系统没声音,电脑驱动确实安装好了, 而且Windows 7系统

安装 SQL SERVER 2008 必须使用 角色管理工具 错误 的 解决方案

刚在服务器(Win2008)上安装SqlServer2008的时候出现了这么一个报错——必须使用“角色管理工具”安装或配置Microsoft .NET Framework 3.5 SP1.一开始以为是没装3.5,后来看了一下服务器上已经装了VS2010了,于是排除这个可能性.Google了一下,于是找到问题的解决方法.(尼玛,最近老是要去服务器上安装和部署各种东西然后就遇到各种问题\("▔□▔)/) 1.问题表现如下,弹出来一提示框:             2.根据提示,先打开角色管理工具.“

解决windows的mysql无法启动 服务没有报告任何错误的经验。

相信很多人都遇到过安装Mysql的时候出现各种各样的问题,教大家解决window下mysql服务没有报告任何错误的情况下无法启动 的问题.本文所用的mysql版本是5.7以上版本,解决方法: 工具/原料 window mysql5.7 方法/步骤 1 注意点1:你在看网上的教程配置完my.ini(自己的mysql配置文件)后不能自己创建一个data文件夹. 2 好多人,包括楼主也是,配置完datadir属性后觉得这个存储数据的文件夹路径没有呀,自己动手建一个呗.错就错在这里,不能动手建,你自己动

windows的mysql无法启动 服务没有报告任何错误

相信很多人都遇到过安装Mysql的时候出现各种各样的问题,今天小编就教大家解决window下mysql服务没有报告任何错误的情况下无法启动 的问题.本文所用的mysql版本是5.7以上版本,解决方法: 1.注意点1:你在看网上的教程配置完my.ini(自己的mysql配置文件)后不能自己创建一个data文件夹. 2 好多人,包括楼主也是,配置完datadir属性后觉得这个存储数据的文件夹路径没有呀,自己动手建一个呗.错就错在这里,不能动手建,你自己动手建的data文件夹里怎么可能有mysql启动

mysql-5.7.10-winx64 MySQL服务无法启动,服务没有报告任何错误的解决办法

总结报错原因:在my.init文件下新增data目录(datadir = F:\mysqldata ) 最新解压版本的mysql 解压安装的时候报错D:\mysql\mysql-5.7.10-winx64\bin>net start mysqlMySQL 服务正在启动 ....MySQL 服务无法启动. 服务没有报告任何错误. 请键入 NET HELPMSG 3534 以获得更多的帮助. mysql下面是没有data文件夹的,此文件夹不需要自己建 D:\mysql\mysql-5.7.10-wi