【问题标题】:Raise custom error in command-line parsing在命令行解析中引发自定义错误
【发布时间】:2013-10-24 01:12:51
【问题描述】:

我正在使用flag 模块来解析我的标志,但希望至少有一个位置参数。当没有足够的位置参数时,如何显示使用帮助,就像在 python 中使用parser.error 一样?

目前,我正在手动调用os.Exit,但是对于应该是一个简单的错误来说,这感觉真的很麻烦:

package main

import "flag"
import "fmt"
import "os"

func main() {
  flag.Parse()
  if flag.NArg() != 1 {
    println("This program needs exactly one argument")
    flag.Usage()
    os.Exit(2)
  }
  fmt.Printf("You entered %d characters", len(flag.Args()[0]))
}

【问题讨论】:

    标签: go go-flag


    【解决方案1】:

    要做这样的事情,我使用log 包。

    package main
    
    import "flag"
    import "fmt"
    import "os"
    import "log"
    
    func main() {
      flag.Parse()
      if flag.NArg() != 1 {
        log.Fatalln("This program needs exactly one argument")
      }
      fmt.Printf("You entered %d characters", len(flag.Args()))
    }
    

    log.Fatal() 和它的姊妹方法(log.Fatalln()log.Fatalf() 等)都是简单地执行 log.Print() 并随后使用 os.exit(1) 的助手。

    编辑 -- 添加链接 http://golang.org/pkg/log/#Fatalln

    【讨论】:

    • 不幸的是,这并没有输出使用情况。
    猜你喜欢
    • 2010-09-14
    • 2017-09-08
    • 1970-01-01
    • 1970-01-01
    • 2012-10-29
    • 2021-01-04
    • 2020-12-11
    • 2014-11-29
    • 1970-01-01
    相关资源
    最近更新 更多