``` if err != nil { fmt.Println(string(cmdOutput), err.Error()) c.String(http.StatusInternalServerError, "") return } ```
时间: 2024-09-28 18:14:23 浏览: 36
这段代码片段是一个Go语言的简单HTTP服务处理函数的一部分,用于检查命令执行(`cmdOutput`)是否出现错误并进行相应处理。以下是针对该代码的一些建议和优化:
1. **解耦:**将错误处理和响应状态分离,使代码更清晰。
2. **使用常量代替硬编码值:**使用常量表示HTTP的状态码,提高可读性。
3. **封装错误信息:**创建一个专门的方法来格式化和返回错误信息。
优化后的代码如下:
```go
constInternalServerError = http.StatusInternalServerError
func handleCommandError(err error, cmdOutput []byte) string {
if err != nil {
return fmt.Sprintf("%s: %v", string(cmdOutput), err)
}
return ""
}
func handleRequest(w http.ResponseWriter, r *http.Request) {
cmdOutput := // 命令执行结果
err := // 检查命令执行错误
response := handleCommandError(err, cmdOutput)
if response != "" {
w.WriteHeader(InternalServerError)
w.Write([]byte(response))
return
}
// 此处可以添加其他处理逻辑或直接结束请求处理
}
```
**优化说明:**
- 将HTTP状态码常量提升到函数外部,便于维护和阅读。
- 创建了一个新的函数 `handleCommandError`,它接受错误和命令输出作为参数,返回一个字符串形式的错误信息。这样可以避免在多个地方重复相同的操作。
- 在 `handleRequest` 函数中,调用 `handleCommandError` 并根据其返回值决定是否发送服务器内部错误响应。如果返回空字符串,则继续正常的请求处理流程。
阅读全文