Package io.grpc
Class Status
- java.lang.Object
-
- io.grpc.Status
-
@Immutable @CheckReturnValue public final class Status extends Object
Defines the status of an operation by providing a standardStatus.Codein conjunction with an optional descriptive message. Instances ofStatusare created by starting with the template for the appropriateStatus.Codeand supplementing it with additional information:Status.NOT_FOUND.withDescription("Could not find 'important_file.txt'");For clients, every remote call will return a status on completion. In the case of errors this status may be propagated to blocking stubs as a
RuntimeExceptionor to a listener as an explicit parameter.Similarly servers can report a status by throwing
StatusRuntimeExceptionor by passing the status to a callback.Utility functions are provided to convert a status to an exception and to extract them back out.
Extended descriptions, including a list of codes that should not be generated by the library, can be found at doc/statuscodes.md
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static classStatus.CodeThe set of canonical status codes.
-
Field Summary
Fields Modifier and Type Field Description static StatusABORTEDThe operation was aborted, typically due to a concurrency issue like sequencer check failures, transaction aborts, etc.static StatusALREADY_EXISTSSome entity that we attempted to create (e.g., file or directory) already exists.static StatusCANCELLEDThe operation was cancelled (typically by the caller).static StatusDATA_LOSSUnrecoverable data loss or corruption.static StatusDEADLINE_EXCEEDEDDeadline expired before operation could complete.static StatusFAILED_PRECONDITIONOperation was rejected because the system is not in a state required for the operation's execution.static StatusINTERNALInternal errors.static StatusINVALID_ARGUMENTClient specified an invalid argument.static StatusNOT_FOUNDSome requested entity (e.g., file or directory) was not found.static StatusOKThe operation completed successfully.static StatusOUT_OF_RANGEOperation was attempted past the valid range.static StatusPERMISSION_DENIEDThe caller does not have permission to execute the specified operation.static StatusRESOURCE_EXHAUSTEDSome resource has been exhausted, perhaps a per-user quota, or perhaps the entire file system is out of space.static StatusUNAUTHENTICATEDThe request does not have valid authentication credentials for the operation.static StatusUNAVAILABLEThe service is currently unavailable.static StatusUNIMPLEMENTEDOperation is not implemented or not supported/enabled in this service.static StatusUNKNOWNUnknown error.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description StatusExceptionasException()StatusExceptionasException(Metadata trailers)Same asasException()but includes the provided trailers in the returned exception.StatusRuntimeExceptionasRuntimeException()Convert thisStatusto aRuntimeException.StatusRuntimeExceptionasRuntimeException(Metadata trailers)Same asasRuntimeException()but includes the provided trailers in the returned exception.StatusaugmentDescription(String additionalDetail)Create a derived instance ofStatusaugmenting the current description with additional detail.booleanequals(Object obj)Equality on Statuses is not well defined.static StatusfromCode(Status.Code code)Return aStatusgiven a canonical errorStatus.Codeobject.static StatusfromCodeValue(int codeValue)Return aStatusgiven a canonical errorStatus.Codevalue.static StatusfromThrowable(Throwable t)ThrowablegetCause()The underlying cause of an error.Status.CodegetCode()The canonical status code.StringgetDescription()A description of this status for human consumption.inthashCode()Hash codes on Statuses are not well defined.booleanisOk()Is this status OK, i.e., not an error.StringtoString()A string representation of the status useful for debugging.static MetadatatrailersFromThrowable(Throwable t)Extract an error trailers from the causal chain of aThrowable.StatuswithCause(Throwable cause)Create a derived instance ofStatuswith the given cause.StatuswithDescription(String description)Create a derived instance ofStatuswith the given description.
-
-
-
Field Detail
-
OK
public static final Status OK
The operation completed successfully.
-
CANCELLED
public static final Status CANCELLED
The operation was cancelled (typically by the caller).
-
UNKNOWN
public static final Status UNKNOWN
Unknown error. SeeStatus.Code.UNKNOWN.
-
INVALID_ARGUMENT
public static final Status INVALID_ARGUMENT
Client specified an invalid argument. SeeStatus.Code.INVALID_ARGUMENT.
-
DEADLINE_EXCEEDED
public static final Status DEADLINE_EXCEEDED
Deadline expired before operation could complete. SeeStatus.Code.DEADLINE_EXCEEDED.
-
NOT_FOUND
public static final Status NOT_FOUND
Some requested entity (e.g., file or directory) was not found.
-
ALREADY_EXISTS
public static final Status ALREADY_EXISTS
Some entity that we attempted to create (e.g., file or directory) already exists.
-
PERMISSION_DENIED
public static final Status PERMISSION_DENIED
The caller does not have permission to execute the specified operation. SeeStatus.Code.PERMISSION_DENIED.
-
UNAUTHENTICATED
public static final Status UNAUTHENTICATED
The request does not have valid authentication credentials for the operation.
-
RESOURCE_EXHAUSTED
public static final Status RESOURCE_EXHAUSTED
Some resource has been exhausted, perhaps a per-user quota, or perhaps the entire file system is out of space.
-
FAILED_PRECONDITION
public static final Status FAILED_PRECONDITION
Operation was rejected because the system is not in a state required for the operation's execution. SeeStatus.Code.FAILED_PRECONDITION.
-
ABORTED
public static final Status ABORTED
The operation was aborted, typically due to a concurrency issue like sequencer check failures, transaction aborts, etc. SeeStatus.Code.ABORTED.
-
OUT_OF_RANGE
public static final Status OUT_OF_RANGE
Operation was attempted past the valid range. SeeStatus.Code.OUT_OF_RANGE.
-
UNIMPLEMENTED
public static final Status UNIMPLEMENTED
Operation is not implemented or not supported/enabled in this service.
-
INTERNAL
public static final Status INTERNAL
Internal errors. SeeStatus.Code.INTERNAL.
-
UNAVAILABLE
public static final Status UNAVAILABLE
The service is currently unavailable. SeeStatus.Code.UNAVAILABLE.
-
DATA_LOSS
public static final Status DATA_LOSS
Unrecoverable data loss or corruption.
-
-
Method Detail
-
fromCodeValue
public static Status fromCodeValue(int codeValue)
Return aStatusgiven a canonical errorStatus.Codevalue.
-
fromCode
public static Status fromCode(Status.Code code)
Return aStatusgiven a canonical errorStatus.Codeobject.
-
fromThrowable
public static Status fromThrowable(Throwable t)
Extract an errorStatusfrom the causal chain of aThrowable. If no status can be found, a status is created withStatus.Code.UNKNOWNas its code andtas its cause.- Returns:
- non-
nullstatus
-
trailersFromThrowable
@Nullable public static Metadata trailersFromThrowable(Throwable t)
Extract an error trailers from the causal chain of aThrowable.- Returns:
- the trailers or
nullif not found.
-
withCause
public Status withCause(Throwable cause)
Create a derived instance ofStatuswith the given cause. However, the cause is not transmitted from server to client.
-
withDescription
public Status withDescription(String description)
Create a derived instance ofStatuswith the given description. Leading and trailing whitespace may be removed; this may change in the future.
-
augmentDescription
public Status augmentDescription(String additionalDetail)
Create a derived instance ofStatusaugmenting the current description with additional detail. Leading and trailing whitespace may be removed; this may change in the future.
-
getCode
public Status.Code getCode()
The canonical status code.
-
getDescription
@Nullable public String getDescription()
A description of this status for human consumption.
-
getCause
@Nullable public Throwable getCause()
The underlying cause of an error. Note that the cause is not transmitted from server to client.
-
isOk
public boolean isOk()
Is this status OK, i.e., not an error.
-
asRuntimeException
public StatusRuntimeException asRuntimeException()
Convert thisStatusto aRuntimeException. UsefromThrowable(java.lang.Throwable)to recover thisStatusinstance when the returned exception is in the causal chain.
-
asRuntimeException
public StatusRuntimeException asRuntimeException(@Nullable Metadata trailers)
Same asasRuntimeException()but includes the provided trailers in the returned exception.
-
asException
public StatusException asException()
Convert thisStatusto anException. UsefromThrowable(java.lang.Throwable)to recover thisStatusinstance when the returned exception is in the causal chain.
-
asException
public StatusException asException(@Nullable Metadata trailers)
Same asasException()but includes the provided trailers in the returned exception.
-
toString
public String toString()
A string representation of the status useful for debugging.
-
equals
public boolean equals(Object obj)
Equality on Statuses is not well defined. Instead, do comparison based on their Code withgetCode(). The description and cause of the Status are unlikely to be stable, and additional fields may be added to Status in the future.
-
hashCode
public int hashCode()
Hash codes on Statuses are not well defined.- Overrides:
hashCodein classObject- See Also:
equals(java.lang.Object)
-
-