<init>在Java异常中表示什么?</init>

时间:2012-08-03 05:48:30

标签: java exception stack-trace

<init>在Java例外中表示什么?

例如:

BlahBlahException...

at java.io.FileInputStream.<init>(FileInputStream.java:20)

2 个答案:

答案 0 :(得分:18)

在构造对象时抛出异常,有两种选择:

  • 在构造函数中
  • 初始化变量时

查看我写的这个演示:http://ideone.com/Mm5w5


class Main
{
        public static void main (String[] args) throws java.lang.Exception
        {
                try
                { new Test(); } catch (Exception e) { e.printStackTrace(); }

                try
                { new Test2(); } catch (Exception e) { e.printStackTrace(); }

                try
                { new Test3(); } catch (Exception e) { e.printStackTrace(); }


        }

        static class Test
        {
                Object obj = getObject();
                Object getObject()
                { throw new RuntimeException("getObject"); }
        }

        static class Test2
        {
                Test2()
                {
                        throw new RuntimeException("constructor");
                }
        }

        static class Test3
        {
                Object obj1 = null;
                String str = obj1.toString();
        }
}

产地:

java.lang.RuntimeException: getObject
    at Main$Test.getObject(Main.java:24)
    at Main$Test.<init>(Main.java:22)
    at Main.main(Main.java:9)
java.lang.RuntimeException: constructor
    at Main$Test2.<init>(Main.java:31)
    at Main.main(Main.java:12)
java.lang.NullPointerException
    at Main$Test3.<init>(Main.java:38)
    at Main.main(Main.java:15)

答案 1 :(得分:7)

  

&LT;的初始化&GT;

被称为

  

实例初始化方法

由您的java编译器从您定义的构造函数创建。虽然它不是有效的方法定义,但是您的JVM期望这样,并且您在构造函数中放置的任何内容都将在方法中执行。因此,当您使用from时出现异常时,可以确定它来自执行的java类的构造函数。请阅读关于Bill Venner在Object Initialization的设计技术文章中的更多相关信息。