Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/408.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 我应该在GraphQL标量中抛出泛型错误吗?_Javascript_Error Handling_Graphql_Graphql Js - Fatal编程技术网

Javascript 我应该在GraphQL标量中抛出泛型错误吗?

Javascript 我应该在GraphQL标量中抛出泛型错误吗?,javascript,error-handling,graphql,graphql-js,Javascript,Error Handling,Graphql,Graphql Js,我正在尝试在GraphQL和服务器的GraphQL-yoga中定义标量类型。问题是,我试图决定在这种情况下是抛出GraphQLError,还是只抛出TypeError 目前,我使用的是一般错误 export const uricalar=new GraphQLScalarType({ 名称:“URI”, description:'其方案为'http'或'https'的URI, 序列化(值){ if(isURI(值)){ 返回值; }否则{ 抛出新错误(“URI格式无效”); } }, 解析值(v

我正在尝试在GraphQL和服务器的
GraphQL-yoga
中定义标量类型。问题是,我试图决定在这种情况下是抛出
GraphQLError
,还是只抛出
TypeError

目前,我使用的是一般错误

export const uricalar=new GraphQLScalarType({
名称:“URI”,
description:'其方案为'http'或'https'的URI,
序列化(值){
if(isURI(值)){
返回值;
}否则{
抛出新错误(“URI格式无效”);
}
},
解析值(value){
if(isURI(值)){
返回值;
}否则{
抛出新错误(“URI格式无效”);
}
},
parseLiteral(ast){
如果(ast.kind=='StringValue'){
if(isURI(ast.value)){
返回ast.value;
}否则{
抛出新错误(“URI格式无效”);
}
}否则{
抛出新错误('URI类型必须为字符串');
}
},
});

一般性错误是完美的,因为其中的信息是有用的

客户端将按预期接收错误,您将能够在软件中找到错误的来源


当您需要更多与之相关联的数据时,自定义错误非常有用,但您所拥有的将起作用

为了更好地创建自定义错误,以便于调试其中一个问题,我发现在后台使用
apollo server
时,
graphql yoga
会抛出错误,但也会返回HTTP 400以解析和验证graphql标量类型。这里有密码。这不是违背了GraphQL不弄乱HTTP代码的最佳实践吗?这是意料之中的,这最终是一个验证问题。我在apollo服务器中使用了相同的模式,没有任何问题。