donglan8256 2016-01-01 09:32
浏览 46
已采纳

如果发生错误并且我的golang应用程序不处理该怎么办?

I'm currently using gorm and gin framework. I wonder what would happen if an error happened and my app didn't handle it?

Example:

if err := db.Where("name = ?", "jinzhu").First(&user).Error; err != nil {
    // error handling...
}

In the above example, the error is being handled.

if db.Model(&user).Related(&credit_card).RecordNotFound() {
    // no credit card found error handling
}

In the next example above, only the RecordNotFound() error is being handled, but what if it throws a different error? what will happen?

Will my app automatically respond with a 500 server internal error and will the app keep on running properly?

  • 写回答

3条回答 默认 最新

  • duansha8764 2016-01-01 09:52
    关注

    In the next example above, only the RecordNotFound() error is being handled, but what if it throws a different error?

    If you won't catch the error it will continue on the code. Error is not a special type it's a simple struct

    err := FunctionThatReturnsError()  
    if err == myError.RecordNotFound() { // if err is not RecordNotFound then it won't enter the if simple as that. 
        // Do something.  
    }  
    
    // continue code.  
    

    Will my app automatically respond with a 500 server internal error and will the app keep on running properly?

    There will be no response if the go routine doesn't panic or you return a response. If you want to handle it you can do:

    err := FunctionThatReturnsError()  
    if err == myError.RecordNotFound() {
          panic("RecordNotFound")
    } 
    

    or

    err := FunctionThatReturnsError()  
    if err == myError.RecordNotFound() {
          c.JSON(500, "Record not found"}
    } 
    

    I don't recommend the panic method. If you're curious google why.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 求差集那个函数有问题,有无佬可以解决
  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名
  • ¥65 汇编语言除法溢出问题