java.lang.StackTraceElement实现了接口Serializable,是堆栈跟踪中的元素,它由 Throwable.getStackTrace()
返回。每个元素表示单独的一个堆栈帧。所有的堆栈帧(堆栈顶部的那个堆栈帧除外)都表示一个方法调用。堆栈顶部的帧表示生成堆栈跟踪的执行点。通常,这是创建对应于堆栈跟踪的 throwable 的点。构造方法信息:
public StackTraceElement(String declaringClass, String methodName, String fileName, int lineNumber)参数说明:
-
declaringClass
- 类的完全限定名,该类包含由堆栈跟踪元素所表示的执行点methodName
- 方法名,该方法包含由堆栈跟踪元素所表示的执行点fileName
- 文件名,该文件包含由堆栈跟踪元素所表示的执行点;如果该信息不可用,则该参数为 nulllineNumber
- 源代码行的行号,该代码行包含由堆栈跟踪元素所表示的执行点;如果此信息不可用,则该参数为负数。值 -2 表示包含执行点的方法是一个本机方法
我们在Android开发的时候,可以利用StackTraceElement类来实现我们日志的打印格式:
private void printLog() {
StackTraceElement stack = (new Throwable()).getStackTrace()[1]; StringBuilder builder = new StringBuilder();
builder.append("<->文件:" + stack.getFileName());builder.append("行号:" + stack.getLineNumber());
builder.append("<->方法:" + stack.getMethodName());
builder.append("<->信息:" + paramString);
Log.i("myLog", builder.toString());
}
如果我们通过日志来调试我们的应用,则通过查看日志,我们能找到出现问题所在的类名,行号,方法名等。
时间: 2024-10-14 21:20:52