控制台能打印的Exception是不是就是RuntimeException?
但是好像ClassNotFoundException在RuntimeException的子类里面没有,
真的是不知道该怎么理解

解决方案 »

  1.   

    classnotfoundexception不是runtime的,exception都能打印,只是checked exception需要写打印语句,在catch中。
      

  2.   

    楼主是不是还没学到Java的异常处理呀?
    Java的异常分为两类:逻辑错误和运行时异常。
    逻辑错误是因为程序逻辑出现错误,导致运行的时候出现错误。常见的就是ClassNotFoundException, NullPointerException, ArrayIndexOutOfBoundsException等等。这类错误是可以通过在编码时发现并避免的。
    另外一类就是运行时异常,其实就是有出现异常的风险。这种异常是你在运行之前是无法确定,因为你的程序本身是没有问题的,但是由于某些原因可能会在运行的时候出错。比如你要读一个文件,你的程序逻辑本身并没有错,但是运行的时候没有找到这个文件,程序就会抛出一个FileNotFoundException。Java专门针对这种异常处理设置了语法,那就是throw和catch还有finally的机制,你可以去学习一下。
    还有,这两种异常都是可以在控制台打印的。
      

  3.   

    我上面说的运行时异常就是楼主说的RuntimeException.
      

  4.   

    还有楼主说的ClassNotFoundException就是我提到的第一种错误。
      

  5.   


    ClassNotFoundException的继承结构:java.lang.Object
      java.lang.Throwable
          java.lang.Exception
              java.lang.ClassNotFoundException
    RuntimeException的继承结构:java.lang.Object
      java.lang.Throwable
          java.lang.Exception
              java.lang.RuntimeException
    可以看出ClassNotFoundException在RuntimeException的子类里面是没有的
    至于控制台能不能打印完全看你怎么处理了
    对于ClassNotFoundException异常必须显式处理,否则编译不通过
    catch掉这个异常后是否打印由你catch块里决定
    对于RuntimeException异常不try{}catch{} 编译也可通过
    如果出错控制台会打印
    但是你要是把它也try{}catch{}一下并且在catch代码中不打印,那这个被捕捉的
    RuntimeException自然也不会打印咯
      

  6.   


    那怎么判断异常是不是RuntimeException,有些时候程序不需要写catch ClassNotFoundException啊,
      

  7.   


    有时候没有处理ClassNotFound啊,
      

  8.   

    哥们,貌似NullPointException就是RuntimeException。
      

  9.   


    哎哟,不好意思,基础知识不牢固,随手打了几个,没想到有一个打错了。
    但是分两类的问题不会有错,请相信我。
    我又想了一下NullPointerException确实应该是运行时异常,这个错误有时候你在编码的时候并不能确定。这时候就需要确定这个指针是不是空指针。简单的做法是用if语句判断一下。当然还可以用assert