Quando uma função falha no runtime Java, o Function Compute captura o erro e retorna uma resposta de erro. A estrutura da resposta depende de como a falha ocorreu.
Cenários de erro
Exceção não tratada
Se a função lançar uma exceção não capturada, o Function Compute a capturará e retornará uma resposta de erro estruturada que inclui o tipo da exceção e o stack trace.
O exemplo a seguir lança uma IOException:
package example;
import com.aliyun.fc.runtime.Context;
import com.aliyun.fc.runtime.StreamRequestHandler;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
public class HelloFC implements StreamRequestHandler {
@Override
public void handleRequest(InputStream inputStream, OutputStream outputStream, Context context) throws IOException {
throw new IOException("oops");
}
}
A invocação retorna:
{
"errorMessage" : "oops",
"errorType" : "java.io.IOException",
"errorCause" : "oops",
"stackTrace" : [ "example.HelloFC.handleRequest(HelloFC.java:15)" ]
}
Saída inesperada do processo
Se a função encerrar a execução voluntariamente durante a operação, o Function Compute retornará uma mensagem de erro genérica.
O exemplo a seguir chama System.exit(-1):
package example;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import com.aliyun.fc.runtime.Context;
import com.aliyun.fc.runtime.StreamRequestHandler;
public class App implements StreamRequestHandler {
@Override
public void handleRequest(InputStream inputStream, OutputStream outputStream, Context context) throws IOException {
System.exit(-1);
}
}
A invocação retorna:
{
"errorMessage": "Process exited unexpectedly before completing request (duration: 43ms, maxMemoryUsage: 65MB)"
}
Campos da resposta de erro
Os campos a seguir podem aparecer em uma resposta de erro.
|
Campo |
Tipo |
Descrição |
|
|
String |
A mensagem de erro. |
|
|
String |
O tipo do erro. |
|
|
List |
O stack trace do erro. |
Para obter mais informações, consulte Conceitos básicos.