📄 localizederror.java
字号:
import java.text.*;
import java.io.*;
import java.util.*;
public class LocalizedError {
public static void display(Throwable error) {
ResourceBundle bundle;
// 获得所需资源.
try {
bundle = ResourceBundle.getBundle("Errors");
}
catch (MissingResourceException e) {
error.printStackTrace(System.err);
return;
}
// 使用错误类名作为资源名称在资源当中查询本地化消息.
// 如果没有则不能显示本地化错误.
String message = null;
Class c = error.getClass();
while((message == null) && (c != Object.class)) {
try {
message = bundle.getString(c.getName());
}
catch (MissingResourceException e) {
c = c.getSuperclass();
}
}
if (message == null) {
error.printStackTrace(System.err); return;
}
String filename = "";
int linenum = 0;
try {
StringWriter sw = new StringWriter(); .
PrintWriter out=new PrintWriter(sw); .
error.printStackTrace(out); .
String trace = sw.toString(); .
int pos = trace.indexOf(':'); // 查找第一个冒号.
if (error.getMessage() != null) // 如果找到本地化错误消息
pos = trace.indexOf(':', pos+1); // 查找第二个冒号.
int pos2 = trace.indexOf(')', pos); // 查找第N行的尾部
linenum = Integer.parseInt(trace.substring(pos+1,pos2)); // 第N行
pos2 = trace.lastIndexOf('(', pos); // 回到文件名的首部.
filename = trace.substring(pos2+1, pos); // 获得文件名.
}
catch (Exception e) { ; }
// 设置于所得消息一起使用的参数表
String errmsg = error.getMessage();
Object[] args = {
((errmsg!= null)?errmsg:""), error.getClass().getName(),
filename, new Integer(linenum), new Date()
};
// 显示错误消息.
System.out.println(MessageFormat.format(message, args));
}
public static void main(String[] args) {
try {
FileReader in = new FileReader(args[0]);
}
catch(Exception e) {
LocalizedError.display(e);
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -