异常、信息国际化样例
目录:
1、信息国际化
2、异常国际化
3、使用方法
4、完整样例代码
内容:
1、信息国际化
首先,定义相关的properties文件,
如LocalStrings_zh_CN.properties:
EXP=\u5F02\u5E38\u56FD\u9645\u5316\u6D4B\u8BD5\!
如LocalStrings_en_US.properties:
EXP=EXP+{0}+INFO
然后,定义读取相关properties文件并匹配正确数据的Java类,该类主要包含的功能有:
a、通过ResourceBundle读取properties文件中的国际化信息,如:
ResourceBundle.getBundle(bundleName, locale, Thread.currentThread().getContextClassLoader());
b、通过 ResourceBundle提供的方法进行数据读取,如:
bundle.getString(key);
c、通过MessageFormat类替换读取到的数据中的变量,变量的存放格式是{0}、{1}...,如:
MessageFormat mf = new MessageFormat(key);mf.setLocale(locale);mf.applyPattern(key);mf.format(args);
2、异常国际化
异常的国际化是基于信息的国际化来完成的,同时也需要我们扩展运行时异常,为异常增加必要的参数,如:
package org.exception;import org.i18n.MessageBundle;/*** 自定义异常类* * @author orientalpigeon* */
public class CustomException extends RuntimeException{private static final long serialVersionUID = -2804635153565996548L;private String code = null;private Object[] arguments = null;public CustomException(String code){this.code = code;}public CustomException(String code,Object[] arguments){this.code = code;this.arguments = arguments;}public CustomException(String code,Object[] arguments,Throwable cause){super(cause);this.code = code;this.arguments = arguments;}public String getCode(){return this.code;}public String getMessage(){return MessageBundle.getMessage(this.code, this.arguments);}}
通过上面定义,便可以通过CustomException异常类的getMessage()方法获取到对应的国际化异常信息。
3、使用方法
a、信息国际化
assertEquals(MessageBundle.getMessage("EXP"), "异常国际化测试!");//设置英文locale对象CustomContext.getInstance().setLocale(new Locale("en","US"));//国际化信息中含有中变量assertEquals(MessageBundle.getMessage("EXP",new Object[]{"en_US"}), "EXP+en_US+INFO");
b、异常国际化
不需要替换变量异常信息:
try{throw new CustomException("EXP");
}catch (CustomException e) {assertEquals(e.getCode(), "EXP");assertEquals(e.getMessage(), "异常国际化测试!");
}
需要替换变量的异常信息:
try{//设置英文locale对象CustomContext.getInstance().setLocale(new Locale("en","US"));//国际化信息中含有中变量throw new CustomException("EXP",new Object[]{"en_US"});
}catch (CustomException e) {assertEquals(e.getCode(), "EXP");assertEquals(e.getMessage(), "EXP+en_US+INFO");
}
4、完整样例代码
见附件。
异常、信息国际化样例相关推荐
- java 异常国际化_基于springboot实现http响应异常信息国际化
背景 国际化是指在设计软件,将软件与特定语言及地区脱钩的过程.当软件被移植到不同的语言及地区时,软件本身不用做内部工程上的改变或修正. 本文提到的异常响应信息国际化是指:前端向后台发起请求,后台在处理 ...
- Spring i18n 国际化样例
网上有很多Spring国际化的样例,但是缺少详细的样例.特别是国外网上很多是Spring MVC(Web)之类的样例,而国内稍具规模的软件开发组织都采用前后端分离的模式,所以几乎很少有易于模仿的 纯基 ...
- 问答Goodfellow:没有样例能不能训练机器学习算法?
李杉 编译整理 量子位 出品 | 公众号 QbitAI 从图像和语音识别到自然语言分析,神经网络已经在很多领域大展身手.过去几年,它们的精确度已经几乎可以与人类媲美.但仍有很多神经网络无法完成的任务- ...
- Spring MVC异常统一处理(异常信息的国际化,日志记录)
JAVA EE项目中,不管是对底层的数据操作,还是业务层的处理过程,还是控制层的处理,都不可避免的会遇到各种可预知的(业务异常主动抛出).不可预知的异常需要处理.一般dao层.service层的异常都 ...
- 【问题描述】3.1.5 用整数1~7依次表示星期一至星期日。由键盘输入一个整数,输出对应的英文表示,如果输入的整数在1~7之外,输出“Error”信息。【样例输入1】1【样例输出1】Monda
[问题描述]3.1.5 用整数1~7依次表示星期一至星期日.由键盘输入一个整数,输出对应的英文表示,如果输入的整数在1~7之外,输出"Error"信息. [样例输入1]1 [样例输 ...
- GDB调试core文件样例(如何定位Segment fault)
core dump又叫核心转储, 当程序运行过程中发生异常, 程序异常退出时, 由操作系统把程序当前的内存状况存储在一个core文件中, 叫core dump. (Linux中如果内存越界会收到SIG ...
- 获取异常信息_如何在 ASP.NET Core 中实现全局异常拦截
异常是一种运行时错误,当异常没有得到适当的处理,很可能会导致你的程序意外终止,这篇就来讨论一下如何在 ASP.Net Core MVC 中实现全局异常处理,我会用一些 样例代码 和 截图 来说明这些概 ...
- idea内存溢出解决_各种OOM代码样例及解决方法
针对目前大家对OOM的类型不太熟悉,那么来总结一下各种OOM出现的情况以及解决方法.把各种OOM的情况列出来,然后逐一进行代码编写复现和提供解决方法. 1. 堆溢出-java.lang.OutOfMe ...
- Java 8 时间日期库的20个使用演示样例
除了lambda表达式,stream以及几个小的改进之外,Java 8还引入了一套全新的时间日期API,在本篇教程中我们将通过几个简单的任务演示样例来学习怎样使用Java 8的这套API.Java对日 ...
最新文章
- [SPOJ 687]Repeats
- jsp页面怎么调用的servlet
- 《Linux菜鸟入门》Linux网络管理
- android自定义绘制二叉树,安卓数据结构04-二叉树
- python itchat 的使用
- [Python]两个list对应元素操作(相减)
- python实现两张图片横向和纵向拼接
- char*转wstring
- 世界杯足球竞赛源码下载
- 数据分析 | 基于智能标签,精准管理数据
- noip2016的研究
- Linux 命令(90)—— which 命令
- 剑指offer面试题48. 最长不含重复字符的子字符串(滑动窗口)
- 用java求解八枚银币问题_算法笔记_004:8枚硬币问题【减治法】
- ASP.NET 2.0 探针
- 微信小程序获取数据并展示
- 前端第二章:6.浏览器的自动修复机制;网页布局 (header标签、main标签、footer标签;nav标签;aside标签)
- MacBook苹果系统下安装Windows XP双系统多分区问题解决
- win10系统查看占用端口
- 用python来做一个APP | python GUI 基础(实战)