Interface CodeBuilder.CatchBuilder
- Enclosing interface:
CodeBuilder
public static sealed interface CodeBuilder.CatchBuilder
The order of catch blocks is significant. When an exception is thrown by the try block, the first catch block whose exception type is the same class as or a superclass of the class of exception thrown is branched to (JVMS §2.10).
- Since:
- 24
- See Also:
Method Summary
| Modifier and Type | Method | Description |
|---|---|---|
CodeBuilder.CatchBuilder |
catching |
Adds a catch block that catches an exception of the given type. |
void |
catchingAll |
Adds a "catch" block that catches all exceptions. |
CodeBuilder.CatchBuilder |
catchingMulti |
Adds a catch block that catches exceptions of the given types. |
Method Details
catching
CodeBuilder.CatchBuilder catching(ClassDesc exceptionType, Consumer<CodeBuilder.BlockCodeBuilder> catchHandler)
The caught exception will be on top of the operand stack when the catch block is entered.
The CodeBuilder.BlockCodeBuilder.breakLabel() for the catch block corresponds to the break label of the tryHandler block in CodeBuilder.trying(Consumer, Consumer).
If the type of exception is null then the catch block catches all exceptions.
- API Note:
- If the type of exception to catch is already handled by previous catch blocks, this block will never be executed.
- Parameters:
-
exceptionType- the type of exception to catch, may benull -
catchHandler- handler that receives aCodeBuilder.BlockCodeBuilderto generate the body of the catch block - Returns:
- this builder
- Throws:
-
IllegalArgumentException- ifexceptionTyperepresents a primitive type - See Also:
catchingMulti
CodeBuilder.CatchBuilder catchingMulti(List<ClassDesc> exceptionTypes, Consumer<CodeBuilder.BlockCodeBuilder> catchHandler)
The caught exception will be on top of the operand stack when the catch block is entered.
The CodeBuilder.BlockCodeBuilder.breakLabel() for the catch block corresponds to the break label of the tryHandler block in CodeBuilder.trying(Consumer, Consumer).
If list of exception types is empty then the catch block catches all exceptions.
- API Note:
- If every type of exception to catch is already handled by previous catch blocks, this block will never be executed.
- Parameters:
-
exceptionTypes- the types of exception to catch -
catchHandler- handler that receives aCodeBuilder.BlockCodeBuilderto generate the body of the catch block - Returns:
- this builder
- Throws:
-
IllegalArgumentException- if any exception type represents a primitive type - See Also:
catchingAll
void catchingAll(Consumer<CodeBuilder.BlockCodeBuilder> catchAllHandler)
The CodeBuilder.BlockCodeBuilder.breakLabel() for the catch block corresponds to the break label of the tryHandler block in CodeBuilder.trying(Consumer, Consumer).
The caught exception will be on top of the operand stack when the catch block is entered.
- API Note:
- Since this block intercepts all exceptions, all subsequent catch blocks will never be executed.
- Parameters:
-
catchAllHandler- handler that receives aCodeBuilder.BlockCodeBuilderto generate the body of the catch block - See Also:
© 1993, 2025, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.