Java çalışma zamanında bir işlev başarısız olduğunda Function Compute hatayı yakalar ve bir hata yanıtı döndürür. Yanıtın yapısı başarısızlığın oluşum biçimine göre değişir.
Hata senaryoları
İşlenmeyen istisna
İşlev yakalanmamış bir istisna fırlatırsa Function Compute bu istisnayı yakalar; istisna türünü ve yığın izini içeren yapılandırılmış bir hata yanıtı döndürür.
Aşağıdaki örnek bir IOException fırlatır:
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ğrı aşağıdaki sonucu döndürür:
{
"errorMessage" : "oops",
"errorType" : "java.io.IOException",
"errorCause" : "oops",
"stackTrace" : [ "example.HelloFC.handleRequest(HelloFC.java:15)" ]
}
Beklenmeyen işlem çıkışı
İşlev çalışırken kendi isteğiyle sonlanırsa Function Compute genel bir hata iletisi döndürür.
Aşağıdaki örnek System.exit(-1) yöntemini çağırır:
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ğrı aşağıdaki sonucu döndürür:
{
"errorMessage": "Process exited unexpectedly before completing request (duration: 43ms, maxMemoryUsage: 65MB)"
}
Hata yanıtı alanları
Bir hata yanıtında aşağıdaki alanlar yer alabilir.
| Alan | Tür | Açıklama |
|---|---|---|
errorMessage |
String | Hata iletisi. |
errorType |
String | Hata türü. |
stackTrace |
List | Hatanın yığın izi. |
Daha fazla bilgi için bkz. Temel bilgiler.