在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 Expressionat 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 Expressionat LambdaExceptionTest2.lambda$main$0(LambdaExceptionTest2.java:9)
at LambdaExceptionTest2.main(LambdaExceptionTest2.java:11)
以上是 在Java Lambda表达式中使用异常时应遵循的规则是什么? 的全部内容, 来源链接: utcz.com/z/322185.html