在Java Lambda表达式中使用异常时应遵循的规则是什么?

该lambda表达式不能自行执行。它用于实现在功能接口中声明的方法。为了在lambda表达式中使用异常处理机制,我们需要遵循一些规则。

Lambda表达规则

  • lambda表达式不能抛出任何checked异常,直到其相应的F unctional interfa CE声明一个抛出子句。

  • 由任何lambda表达式引发的异常可以与在其功能接口的throws子句中声明的异常具有相同类型或子类型。

示例1

interface ThrowException {

   void throwing(String message);

}

public class LambdaExceptionTest1 {

   public static void main(String[] args) {

      ThrowException te = msg -> {     // lambda expression

         throw new RuntimeException(msg); // RuntimeException is not a checked exception

      };

      te.throwing("Lambda Expression");

   }

}

输出结果

Exception in thread "main" java.lang.RuntimeException: Lambda Expression

   at LambdaExceptionTest1.lambda$main$0(LambdaExceptionTest1.java:8)

   at LambdaExceptionTest1.main(LambdaExceptionTest1.java:10)


示例2

import java.io.*;

interface ThrowException {

   void throwing(String message) throws IOException;

}

public class LambdaExceptionTest2 {

   public static void main(String[] args) throws Exception {

      ThrowException te = msg -> {    // lambda expression         throw new FileNotFoundException(msg); // FileNotFoundException is a sub-type of IOException

      };

      te.throwing("Lambda Expression");

   }

}

输出结果

Exception in thread "main" java.io.FileNotFoundException: Lambda Expression

   at LambdaExceptionTest2.lambda$main$0(LambdaExceptionTest2.java:9)

   at LambdaExceptionTest2.main(LambdaExceptionTest2.java:11)

以上是 在Java Lambda表达式中使用异常时应遵循的规则是什么? 的全部内容, 来源链接: utcz.com/z/322185.html

回到顶部