当前位置: 首页 > 知识库问答 >
问题:

如何捕捉特定的空对象?

狄珂
2023-03-14

我有一个有4个参数的类。还有一个测试,将空对象放入。有可能捕捉到这个空值吗?我的意思是,有些测试将IlligalArgumentException放在了一起。所以,如果我尝试用try-catch块捕捉这个空对象,对于整个costructor块,这个可以工作,但其他测试会崩溃,反之亦然。

class Quadrilateral extends Figure{
        Quadrilateral(Point a, Point b, Point c, Point d){
    }
}
    @Test
        void testConstructor() {
            Figure q = null;
            q = q(0, 0, 0, 1, 1, 1, 1, 0);
            q = q(-2, 2, -3, 1, 0, 1, 0, 2);
        }
    
    @Test
        void testConstructorNullACase() {
            assertThrows(IllegalArgumentException.class, () -> q(null, new Point(-3, 1), new Point(0, 1), new Point(1, 9)));
        }

共有1个答案

西门智
2023-03-14

您可以使用龙目岛API来实现此目的。如果使用 @NonNull 对参数进行批注,并且该参数设置为 null,则会引发 NullPointerException

Lombok代码:

public NonNullExample(@NonNull Person person) {
    super("Hello");
    this.name = person.getName();
  }

普通Java:

public NonNullExample(Person person) {
    super("Hello");
    if (person == null) {
      throw new NullPointerException("person is marked non-null but is null");
    }
    this.name = person.getName();
  }

更多信息请见: 龙目岛

 类似资料:
  • 我正在开发一个灯光(LED)通信系统,使用Android手机摄像头作为接收器,对摄像头帧进行阈值处理。为此,我使用了preview的回调方法onPreviewFrame。为了更准确,需要每隔几帧延迟一帧的捕获,以便系统将重新同步。 我的问题是: 如何延迟单个帧的捕获(而不是预览) *为了限制相机的fps速率,我使用了setPreviewFpsRange、setAutoWhiteBalanceLoc

  • 在节点中。在js服务器上,捕获SIGTERM和捕获SIGINT有什么区别吗? 我认为进程不应该能够防止SIGINT关闭? 我是否能够捕获两个信号并阻止退出?我的实验表明答案是肯定的,但从我所读到的内容来看,SIGINT总是假设关闭一个进程。 或者我把SIGINT和SIGKILL混淆了?也许SIGKILL是我无法恢复的信号? 捕捉这些信号当然可以让我优雅地关机: 我想我把SIGINT和SIGKILL

  • 问题内容: 我有一个很大的数学表达式,必须动态创建。例如,一旦我已经解析了“东西”,结果就会像一个字符串:。 因此,为了计算该表达式的结果,我使用的是函数…… 这里的问题是,有时我会收到错误消息,说被零除,并且我不知道如何捕获该异常。我已经尝试过类似的事情: 要么: 但这行不通。因此,如何避免被零除的应用程序崩溃? 编辑: 首先,我想澄清一下:表达式是动态构建的,因此如果分母为零,我不能仅仅求值。

  • 我正在尝试用kotlin做一个Spring MVC RestController,但是我很难用LocalDatetime使用RequestParams。 如果我不指定参数< code>localhost:8080/,它会给出一个可在ControllerAdvice中捕获的错误,但如果我指定一个空值< code > localhost:8080/end date = ,它会给出< code > Ja

  • 我想捕获并忽略以下tomcat。因为我的程序没有必要注意这个。 知道如何以及在哪里可以捕捉到这个异常吗?以下是例外情况:

  • 问题内容: 在Java中是否有捕捉到内存不足错误()的问题? 问题答案: 是的 。以下是一些可能有意义的示例: 如果您想通过 优雅地关闭 程序来处理它 如果要向用户显示问题或 记录错误 根据您的设计,您甚至可以清理内存并 恢复工作状态 但是 ,请注意,通常情况下(除非您处在一次要分配大量内存的位置),对于这些情况,您可能不会专门捕获OutOfMemoryError,而是始终在顶部进行操作主要入口点