Java中有没有办法通过反射或一些很棒的API动态获取当前行号?就像异常发生时一样,行号在堆栈跟踪中打印出来,如下所示:
at weblogic.rmi.cluster.ClusterableRemoteRef.invoke(ClusterableRemoteRef.java:348)
Run Code Online (Sandbox Code Playgroud)
现在有没有办法在下面的代码中打印或记录?
log.error("Error in: " + this.getClass.getName() + "at line #"+ this.getClass.getActualLine());
Run Code Online (Sandbox Code Playgroud)
你可能会问,我为什么不简单地打印行号?好吧,因为代码可能会在特定的log.error()方法调用之前被删除或添加.
我想在LogCat中插入一个日志,当我点击它时会跳转到它的行,就像系统生成的一些错误日志一样.
可能吗?
我创造了一个号码.常量变量超过1000,那些常量是唯一的整数.
public static final FOO 335343
public static final BAR 234234
public static final BEZ 122424
....
....
....
Run Code Online (Sandbox Code Playgroud)
有没有办法打印出FOO,BAR和BEZ,这是Java中名字的变量?我不熟悉java反射.我不知道这是否有帮助.
if ( FOO == 335343)
---> output "FOO"
if ( BAR == 234234 )
---> ouptut "BAR"
....
Run Code Online (Sandbox Code Playgroud)
实际上问这个问题是我想写日志到文件
说
System.out.println("This time the output is " + FOO);
Run Code Online (Sandbox Code Playgroud)
而实际的输出是
This time the output is 335323
Run Code Online (Sandbox Code Playgroud)
我想知道哪个变量来自335323.除了将这些变量及其关联常量放入hashMap之外还有其他方法吗?
谢谢
我 Java 我将此附加到我的打印语句中,并且它们有一个堆栈跟踪...
public static int getLineNumber() {
// The second row of the stack trace had the caller file name, etc.
return Thread.currentThread().getStackTrace()[2];
}
Run Code Online (Sandbox Code Playgroud)
我怎么做这是 Haskell?
我有一个以以下格式输出到控制台和日志文件的模式:
[INFO] 17:31:12 - Checking Bla Bla Bla
[INFO] 17:31:12 - ************* Starting *********************
[INFO] 17:31:12 - Testing Begins
Run Code Online (Sandbox Code Playgroud)
有什么方法可以附加行数,使其看起来像:
[001][INFO] 17:31:12 - Checking Bla Bla Bla
[002][INFO] 17:31:12 - ************* Starting *********************
[003][INFO] 17:31:12 - Testing Begins
Run Code Online (Sandbox Code Playgroud) 我有一个名为A.class的hello世界程序。它是使用command编译的javac A.java。它所做的只是打印“ hello world”。
接下来,我使用进行了编译javac -g A.java。我期望看到行号,但看不到。知道发生了什么吗?
我确实看到在javac编译的.class文件和javac -g编译后的某些特殊字符之间的细微差别。但是我看不到任何行号。
我对此的好奇心是因为我想找到线数可能会对性能产生什么样的影响。其次,我想知道log4j等如何维护记录的行号。谢谢。
我开发了一个程序,它有一个入口点.Try catch块围绕着它.
try {
Runner runner = new Runner();
// Adhoc code
UIManager.setLookAndFeel(new NimbusLookAndFeel());
runner.setupVariables();
runner.setLookAndFeel();
runner.startSessionFactory();
runner.setupApplicationVariables();
runner.setupDirectories();
// This will be used to test out frames in development mode
if (Runner.isProduction == true) {
execute();
} else {
test();
}
} catch (Exception e) {
SwingHelper.showErrorMessageMainFrame(e.getMessage());
Logger.getRootLogger().error(e);
e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)
但是假设抛出空指针异常,消息框为空,因为Exception不包含消息.为此,我添加了一个逻辑 -
if(e instanceof NullPointerException){
NullPointerException n =(NullPointerException) e;
SwingHelper.showErrorMessageMainFrame("Unexpected Exception due at ");
}else{
SwingHelper.showErrorMessageMainFrame(e.getMessage());
}
Run Code Online (Sandbox Code Playgroud)
这一切都很好,但我也希望显示行号.我怎样才能完成它.如何获取异常的行号?
如果在创建 apk 的过程中删除了 java 文件中的注释,日志语句如何能够打印正确的行号?有人可以解释一下吗?我在编译 java 文件时也看到了相同的行为。