【问题标题】:Java reflection - Error throwJava 反射 - 错误抛出
【发布时间】:2013-03-24 13:01:51
【问题描述】:

我有以下代码:

class ClassDetails {
  private String current_class;
  public ClassDetails(String current_class) {
    this.current_class = current_class;
  }
  public void getClassDetails() throws ClassNotFoundException {
    try {
        Class theClass = Class.forName(current_class);
        String name = theClass.getName() ;
        System.out.println(name);
    } catch (ClassNotFoundException e) {
        System.out.println(e.getMessage());
    }
  }
}

class MMain {
  public static void main(String[] args) {
      ClassDetails C = new ClassDetails(args[0]);
      C.getClassDetails();
  }
}

我在 main 中有这个错误:

Unhandled exception type ClassNotFoundException

我该如何解决这个问题?

【问题讨论】:

  • 好吧,你可能在运行代码时提供了错误的名称......不幸的是,因为我们不知道你运行了什么,或者你试图加载什么类,这很难提供更多建议...
  • 我没有运行它。我不能,因为我有那个错误。
  • @JonSkeet 这是编译时错误,请参阅我的帖子。
  • @MrLore:Doh,看到 ClassNotFoundException 并误读了其余部分:(

标签: java exception reflection throws


【解决方案1】:

您的main 方法调用getClassDetails() 方法,该方法会引发该异常,如签名所示:

public void getClassDetails() throws ClassNotFoundException

而且您没有捕获它,也没有将它扔到方法中,因此您的代码将无法编译。所以你必须这样做:

public static void main(String[] args) throws ClassNotFoundException {
    ClassDetails C = new ClassDetails(args[0]);
    C.getClassDetails();
}

或者:

public static void main(String[] args) {
    ClassDetails C = new ClassDetails(args[0]);
      try
      {
          C.getClassDetails();
      }
      catch(ClassNotFoundException ex)
      {
          //Add exception handling here
      }
}

【讨论】:

  • 或者,当方法正在捕获异常时,从 throws 子句中删除它。
猜你喜欢
  • 2023-03-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-18
  • 1970-01-01
  • 1970-01-01
  • 2018-11-01
  • 1970-01-01
相关资源
最近更新 更多