Java 有没有一种简单的方法来判断StackTraceeElement是否来自您的源代码?

Java 有没有一种简单的方法来判断StackTraceeElement是否来自您的源代码?,java,io,Java,Io,下面是一个示例应用程序,在Foo.main()处抛出一个错误: 以下是输出: Foo.main(Foo.java:5) sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) sun.reflect.DelegatingMethodAccessorImpl.invoke(Dele

下面是一个示例应用程序,在
Foo.main()
处抛出一个错误:

以下是输出:

Foo.main(Foo.java:5)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
java.lang.reflect.Method.invoke(Method.java:483)
com.intellij.rt.execution.application.AppMain.main(AppMain.java:134)
假设我并不真正关心最后五个
StackTraceElement
对象

有没有一种简单的方法可以过滤掉我的项目中没有编译的内容?

从评论中提取(duffymo和我的评论)

  • 选择一个唯一的包名。示例将是
    com.yourcompany
    com.productname
    。。。等

  • 在异常处理例程中,检查包是否以 你的模式


  • 软件包名称应该足以说明什么是您的,什么是来自第三方的。你还缺少什么?@Joseph Nields:没有。你的项目应该有顶级软件包。(com.company..或net.projectname..)然后只检查包名部分。@Jayan,这是一个简单易行的答案,只需要一个正则表达式。你能加上吗?
    Foo.main(Foo.java:5)
    sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    java.lang.reflect.Method.invoke(Method.java:483)
    com.intellij.rt.execution.application.AppMain.main(AppMain.java:134)