Thu*_*fir 32 java nullpointerexception throwable java.util.logging printstacktrace
如何使用 java.util.Logger 打印整个堆栈跟踪?(没有恼人的Netbeans).
该问题应该最初指定保留在 Java SE中.省略这个要求对我来说是一个错误.
-do-compile:
[mkdir] Created dir: /home/thufir/NetBeansProjects/rainmaker/build/empty
[mkdir] Created dir: /home/thufir/NetBeansProjects/rainmaker/build/generated-sources/ap-source-output
[javac] Compiling 13 source files to /home/thufir/NetBeansProjects/rainmaker/build/classes
[javac] /home/thufir/NetBeansProjects/rainmaker/src/model/TelnetEventProcessor.java:44: error: 'void' type not allowed here
[javac] log.severe(npe.printStackTrace(System.out));
[javac] ^
[javac] 1 error
BUILD FAILED
Run Code Online (Sandbox Code Playgroud)
代码有错误:
package model;
import java.util.Observable;
import java.util.logging.Logger;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class TelnetEventProcessor extends Observable {
private static Logger log = Logger.getLogger(TelnetEventProcessor.class.getName());
private String string = null;
public TelnetEventProcessor() {
}
private void stripAnsiColors() {
Pattern regex = Pattern.compile("\\e\\[[0-9;]*m");
Matcher regexMatcher = regex.matcher(string);
string = regexMatcher.replaceAll(""); // *3 ??
}
public void parse(String string) {
this.string = string;
ifs();
}
// [\w]+(?=\.)
private void ifs() {
log.fine("checking..");
if (string.contains("confusing the hell out of")) {
Pattern pattern = Pattern.compile("[\\w]+(?=\\.)"); //(\w+)\.
Matcher matcher = pattern.matcher(string);
String enemy = null;
GameData data = null;
while (matcher.find()) {
enemy = matcher.group();
}
try {
data = new GameData.Builder().enemy(enemy).build();
log.fine("new data object\t\t" + data.getEnemy());
setChanged();
notifyObservers(data);
} catch (NullPointerException npe) {
log.severe(npe.printStackTrace(System.out));
}
} else if (string.contains("Enter 3-letter city code:")) {
log.fine("found enter city code");
} else {
}
}
}
Run Code Online (Sandbox Code Playgroud)
也可以看看:
M. *_*bas 50
该severe方法仅用于记录严重消息而没有相关的可抛出信息.如果您需要记录throwable信息,那么您应该使用该log方法:
try {
data = new GameData.Builder().enemy(enemy).build();
log.fine("new data object\t\t" + data.getEnemy());
setChanged();
notifyObservers(data);
} catch (NullPointerException npe) {
log.log(Level.SEVERE, npe.getMessage(), npe);
}
Run Code Online (Sandbox Code Playgroud)
Mic*_*gue 10
你为什么不把这个例外放在记录器中?
您可以使用此方法:
logger.log(Level level, String msg, Throwable thrown)
Run Code Online (Sandbox Code Playgroud)
小智 9
也许一个重复的问题?Java - 需要一个记录堆栈跟踪的日志包
下面是给定网址的解释
使用log4j,这可以通过以下方式完成:
Run Code Online (Sandbox Code Playgroud)logger.error("An error occurred", exception);第一个参数是要显示的消息,第二个参数是异常(throwable),其堆栈跟踪被记录.
另一个选项是commons-logging,它是相同的:
Run Code Online (Sandbox Code Playgroud)log.error("Message", exception);有了
java.util.logging这可以通过这样做:Run Code Online (Sandbox Code Playgroud)logger.log(Level.SEVERE, "Message", exception);
您没有显式打印堆栈跟踪; Throwables附加了堆栈跟踪,您可以传递Throwable给日志方法:
log(Level level, String msg, Throwable thrown)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
55224 次 |
| 最近记录: |