java异常捕获与抛出不同的类

时间:2015-03-23 05:54:56

标签: java exception try-catch

我一直致力于完成两件事的代码:

  1. 有一个执行计算(逻辑)的类

  2. 有一个显示结果的类。

  3. 我想知道是否可以在Display类中使用try / catch语句,我将尝试捕获源自逻辑类的异常。

    Display将执行类似于logic.execute(输入)的行;

    我能够创建一个自定义异常类,其中以下内容放在显示类中:

    try{
    logic.execute(input);
    }catch(CustomException e){
    //print statements
    }
    

    但是我希望能够准确打印出现的错误,例如NullPointerException。

    当我说打印时,我的意思是在控制台输出。 (但它必须来自显示类)

    如果可能存在这种怪异,请告诉我。

    谢谢你们!

1 个答案:

答案 0 :(得分:2)

是的,这是可能的。
您将需要自定义异常类来扩展RuntimeException而不是Exception,否则编译器会抱怨您没有捕获您抛出的异常。

请参阅此帖子:Throwing custom exceptions in Java

简单的工作示例:

public class ExceptionTest
{
  public static void main(String[] args)
  {
    SomeClass myObject = new SomeClass();

    myObject.testFunction();
  }
}

public class SomeClass
{
  private SomeOtherClass someOther = new SomeOtherClass();


  public void testFunction()
  {
    try{
     someOther.someOtherFunction();
    }
    catch(Exception e){
      System.out.println(e.toString());
    }
  }
}

public class SomeOtherClass
{

  public void someOtherFunction()
  {
    throw new CustomException("This is a custom exception!");
  }
}

public class CustomException extends RuntimeException
{
  public CustomException(String message)
  {
    super(message);
  }
}