我怎样才能在犀牛当前脚本名和行号?

我创建使用Java和Mozilla Rhino的游戏引擎,我想所有的错误调用一个函数,并为它提供了错误信息,如

... } catch(Exception e) { Abort(e); } ... public void Abort(str) { System.out.println("Script error in "current_script_name+" line: "+line_number\n\n"+e); }

这是很容易的RhinoException,但我想有同样的事情其他人,如IOException异常。

--------------解决方案-------------

这取决于有点异常是如何被抛出,所以我需要采取一种猜测。 它取决于你使用的执行犀牛优化级别。

我猜测,异常被抛出的本地Java代码(即,在不使用throw new Packages.java.io.IOException("...") 在这种情况下,你可以使用的printStackTrace()来弄明白。 这里有一个小脚本(名为test.jsh.js ,您将在堆栈跟踪中看到的),你可以在Rhino shell中运行:

try {
// foo does not exist
var stream = new Packages.java.io.FileInputStream("foo");
} catch (e) {
e.rhinoException.printStackTrace();
}

......它的输出:

$ Java的罐子$(cygpath -w /opt/java/rhino/1.7R2/js.jar)-opt -1 test.jsh.js
org.mozilla.javascript.WrappedException:裹java.io.FileNotFoundException:富(系统找不到指定的文件)(test.jsh.js#4)
在org.mozilla.javascript.Context.throwAsScriptRuntimeEx(Context.java:1773)
在org.mozilla.javascript.MemberBox.newInstance(MemberBox.java:202)
在org.mozilla.javascript.NativeJavaClass.constructSpecific(NativeJavaClass.java:281)
在org.mozilla.javascript.NativeJavaClass.construct(NativeJavaClass.java:200)
在org.mozilla.javascript.Interpreter.interpretLoop(Interpreter.java:3377)
在脚本(test.jsh.js:4)
在org.mozilla.javascript.Interpreter.interpret(Interpreter.java:2487)
在org.mozilla.javascript.InterpretedFunction.call(InterpretedFunction.java:164)
在org.mozilla.javascript.ContextFactory.doTopCall(ContextFactory.java:398)
在org.mozilla.javascript.ScriptRuntime.doTopCall(ScriptRuntime.java:3065)
在org.mozilla.javascript.InterpretedFunction.exec(InterpretedFunction.java:175)
在org.mozilla.javascript.tools.shell.Main.evaluateScript(Main.java:564)
在org.mozilla.javascript.tools.shell.Main.processFileSecure(Main.java:486)
在org.mozilla.javascript.tools.shell.Main.processFile(Main.java:452)
在org.mozilla.javascript.tools.shell.Main.processSource(Main.java:443)
在org.mozilla.javascript.tools.shell.Main.processFiles(Main.java:196)
在org.mozilla.javascript.tools.shell.Main $ IProxy.run(Main.java:117)
在org.mozilla.javascript.Context.call(Context.java:515)
在org.mozilla.javascript.ContextFactory.call(ContextFactory.java:507)
在org.mozilla.javascript.tools.shell.Main.exec(Main.java:179)
在org.mozilla.javascript.tools.shell.Main.main(Main.java:157)
java.io.FileNotFoundException:引起美孚(系统找不到指定的文件)
在java.io.FileInputStream.open(本机方法)
在java.io.FileInputStream中。(来源不明)
在java.io.FileInputStream中。(来源不明)
在sun.reflect.NativeConstructorAccessorImpl.newInstance0(本机方法)
在sun.reflect.NativeConstructorAccessorImpl.newInstance(来源不明)
在sun.reflect.DelegatingConstructorAccessorImpl.newInstance(来源不明)
在java.lang.reflect.Constructor.newInstance(来源不明)
在org.mozilla.javascript.MemberBox.newInstance(MemberBox.java:194)
... 18个

如果你真的想正好利用Abort()你有上述功能,您可以解析到相应的行上文的堆栈跟踪; 另外,可以显示整个堆栈跟踪,这可能更有帮助,这取决于你想要做什么。

你为什么不建立某种形式的日志记录功能,为您的例外样的Log4j? 有了这个,你可以设置一个properties文件中,每次登录的东西它输出以同样的方式(而不是总是调用一个时间的方式Abort()函数此外,Log4j的支持让行号和其他功能:Log4j的模式。

分类:java的 时间:2012-01-01 人气:0
分享到:

相关文章

  • Java的如何建立小程序应用程序的可执行 2012-10-10

    我实现了java程序的应用程序. 我寻找的是如何来创建此application.I可执行文件我没有找到什么好的解决办法的过程. 请任何人可以帮助我. 谢谢 --------------解决方案------------- Java小应用程序的可执行文件或者是一个.jar文件,或.class目录. 您在网页中执行的Java小程序. 您将.jar文件或.class目录在你的web目录结构. 下面是一个例子HTML小程序: <applet code=NameOfApplet.class name=Nam

  • 如何绘制填充方框中的Java这正是在小程序窗口的中心? 2013-10-27

    你如何绘制填充方框中的Java这正是在小程序窗口的中心? 和调整大小的窗口时,则在水平和垂直方向上居中的小程序窗口内? 我希望它适应屏幕的垂直高度,但留方甚至作为水平宽度边缘. 如果调整窗口的大小过于狭窄,那么双方可能会切断? --------------解决方案------------- 这里有一个面板,要么做一个30像素正方形中间,或调整与面板的一个例子. 也许这可以给你足够的取得进步. private class MyPanel extends JPanel{ int height = 3

  • 爪哇 - 因为java.lang.UnsupportedClassVersionError的小程序 2014-09-06

    我写的不是那么简单的应用程序,并决定将小程序. 我有存档的.jar和主类有chat.java(它包含init()和扩展JApplet的). 我在HTML文件的代码: <applet code="chat.class" archive="chat.jar" width="150" height="150"> Error! </applet> 并给出了错误 java.lang.UnsupportedClas

  • Java的MP3SPI在小程序 2012-09-01

    我一直在挣扎与这对通过几个小时,但也许你们可以给我一些帮助. 我已经写了需要使用MP3文件的应用程序. 在应用程序运行正常因为据说附带,我从javazoom拿起MP3SPI classpath中的jar文件. 然而,当我尝试运行小程序,我得到了不支持的AudioFile例外. 我修改的applet标记归档参数,包括其他3个jar文件,jl1.0.1.jar,tritonus_share.jar,mp3spi1.9.5.jar但我仍然得到UnsupportedAudioException. 有没有

  • Java卡编程和小程序安装 2013-03-17

    我是新来的Java卡programming.While在我的Java卡应用程序所有者销工作,我提到了"PIN接口,这是Java卡的框架包不作何处输入PIN值比较数据存储任何假设". 我想知道以下, 我能在我的主人脚被存储的确切位置? 如果我能怎么办呢? 如何导出我的更新所有者针? 我有我的Java卡应用程序的一个小程序. 现在,我怎么可以加载和安装到我的javacard.I知道有可用的工具,并配备了智能卡本身. 但我想没有安装工具,只有通过APDU命令. 有没有什么方法做到这一点? 如

  • Java的截屏小程序 2013-05-17

    想知道是否有任何的小程序,我可以使用和定制捕获Java中的用户屏幕(Windows和Mac)? 只见jxCapture,但只需要截屏. 我想使用该工具来捕获屏幕(用于截屏),然后导出为FLV格式. 我想知道对于最新最好的解决方案? 有没有小应用程序/ SDK,我可以,但和定制? 谢谢. --------------解决方案------------- 我尝试过类似的事情,前阵子问题Java是你不能采取截图速度不够快,我甚至不能得到1 FPS http://stackoverflow.com/que

  • Java的UDP通信小程序UDP服务器 2014-02-08

    我一直工作在不同的方式来满2编码天做到这一点,我需要一些帮助: 我想在网上创建Java中的多人游戏. 要做到这一点,我需要在服务器和小应用程序之间的通信 我的印象是,只要UDP服务器被小程序被托管在同一台机器上运行,它会工作. (也许我需要上加以纠正) 我不断地得到错误控制台(来自小程序)这个错误java.security.AccessControlException:访问被拒绝(java.net.SocketPermission 127.0.0.1:5556连接,解决) 当试图在小程序接收消息

  • 的Java文件上传小程序 - 需要的建议 2015-02-03

    我想Java构建一个简单的文件上传小程序. 它将被用于将文件上传到一个普通的Linux Web服务器. 因此,如果有人去了: http://site.com/file-upload-applet 和上传的经由该applet的文件在那里,它可以访问在: http://site.com/uploads/your-file.jpg 用户应该能够单击"浏览",然后期待通过他的电脑上的文件夹,并能够在文件夹中选择尽可能多的文件,或者每一个文件,如果他想. 然后,当他打上传,他应该显示进度条,而文

  • 我怎样才能触发JavaScript的一个Silverlight的小程序加载后执行? 2013-03-30

    我工作的一个项目,我有很多的JavaScript和托管代码之间的互动. 其实,我需要的JS应用程序从一开始就在页面右侧的Silverlight应用程序接口. 所以,我需要Silverlight应用程序加载JS代码被执行之前. 但是,尽管这样,大部分的时间,我得到未找到对象为Silverlight应用程序尚未加载的错误. 所以,我需要Silverlight的加载JS执行前. 有没有一种方法我可以把JS的应用程序停止,直到Silverlight的负载,然后开始执行? --------------解决

  • 乔达时间java.lang.NoClassDefFoundError的小程序中 2014-11-12

    可能重复: 我的代码编译在Eclipse,但我得到在运行时ClassNotFound的我该如何解决? 我在一个applet引用乔达时间,当我调试的Eclipse一切运行的内部预期. 然而,当我出口我的jar文件我得到一个错误 java.lang.NoClassDefFoundError的:组织/乔达/时间/ ReadableInstant 在运行时. 我在想什么? --------------解决方案------------- 放入的乔达罐子<web-server-root>/webapps/

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 0.928 (s). 10 q(s)