java 如何打印异常
打印异常的基本方法
在 Java 中,打印异常信息通常使用 printStackTrace() 方法。该方法会将异常的堆栈跟踪信息输出到标准错误流(System.err),包含异常类型、消息以及调用堆栈。
try {
// 可能抛出异常的代码
int result = 10 / 0;
} catch (ArithmeticException e) {
e.printStackTrace();
}
打印异常到标准输出
如果需要将异常信息打印到标准输出(System.out),可以使用 PrintStream 或 StringWriter 捕获堆栈跟踪信息。
try {
int result = 10 / 0;
} catch (ArithmeticException e) {
e.printStackTrace(System.out); // 输出到 System.out
}
获取异常信息字符串
若需要将异常信息作为字符串处理,可以使用 StringWriter 和 PrintWriter。
try {
int result = 10 / 0;
} catch (ArithmeticException e) {
StringWriter sw = new StringWriter();
e.printStackTrace(new PrintWriter(sw));
String exceptionAsString = sw.toString();
System.out.println(exceptionAsString);
}
打印异常类型和消息
如果仅需打印异常类型和消息,可以直接调用 getMessage() 或 toString()。
try {
int result = 10 / 0;
} catch (ArithmeticException e) {
System.out.println("Exception message: " + e.getMessage());
System.out.println("Exception toString: " + e.toString());
}
使用日志框架打印异常
在实际项目中,推荐使用日志框架(如 SLF4J、Log4j)打印异常信息,而非直接输出到控制台。
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class Example {
private static final Logger logger = LoggerFactory.getLogger(Example.class);
public static void main(String[] args) {
try {
int result = 10 / 0;
} catch (ArithmeticException e) {
logger.error("An arithmetic exception occurred", e);
}
}
}
自定义异常打印格式
可以通过重写异常的 toString() 方法或使用自定义工具类格式化异常信息。

public class CustomException extends Exception {
@Override
public String toString() {
return "CustomException: " + getMessage();
}
}
// 使用示例
try {
throw new CustomException("Something went wrong");
} catch (CustomException e) {
System.out.println(e);
}






