电脑启动文件路径错误怎么办-(电脑启动文件路径错误怎么办啊)

如何处理计算机启动文件路径错误?

(如何处理计算机启动文件路径错误?啊)

前言例如,在介绍函数章节中,Go没有语言try...catch这种异常处理机制不能像java执行抛异常操作, 但是在Go可用于语言defer...recover...panic实现类似的机制try...catch效果;今天我们将讨论这个话题;

Go为什么不设计?try...catch异常机制


java里使用try/catch 机制,声明函数定义Expception使用层次不够简单,调用时异常处理过度泛滥,利用内存栈空间从底层向更高层次抛掷异常资源过度消耗。Go未使用设计机制java里try...catch但也实现了类似的异常机制 “捕捉” 将异常放入机制中,但更轻,只作为最终手段(处理错误)。


GO预定义了一个error接口类型;用错误值表示错误状态, 与其他数据类型一样,错误类型也是一种数据类型,可作为参数或返回值


type error interface{ Error() string }


错误定义


在GO语言里,没有类似Java如此强烈的面向对象特征, 可通过结构实现Error定义错误对象类型的方法,例如


type NullException struct{}?func (ne *NullException) Error() string{ return "NullPointException"}?func Trim(s *string) (string,error){ if s == nil{ return "",&NullException{}}else{ return strings.TrimSpace(*s),nil }}

例如,上述代码定义了异常对象的类型NullException; 可以通过 err:=&NullException{}生成错误对象;

上面是通过type struct定义错误; 除此之外,还可以使用errors内置函数包errors.New产生新的错误类型对象;如下代码:


func Trim(s *string) (string,errors.New("NullPointException") }else{ return strings.TrimSpace(*s),nil }}


与上述方法相比,代码更简单,很多源代码都是这样写的; 让我们来看看一个完整的例子


func TestException(t *testing.T){ var s *string? if rtn,err := Trim(s); err == nil{ fmt.Printf("Trim(%v)=%v

",s,rtn) }else{ fmt.Printf("Trim(%v) throw exception: %v

",err) }? var a string if rtn,err := Trim(&a); err == nil{ fmt.Printf("Trim(%v)=%v

",&a,err) }}??===== OUTPUT ======== RUN TestExceptionTrim(<nil>) throw exception: NullPointException Trim(0xc000273a10)= --- PASS: TestException (0.00s)PASS


在上述代码中,第一次调用Trim(s),s定义为string对于指针类型的变量,定义后自动初始化为指针类型nil,所以Trim(s)调用会返回NullExpcetion对象; 也就打印出Trim(<nil>) throw exception: NullPointException ;


对于第二个Trim(&a);a定义为string类型对象,string定义基本类型对象后,自动初始化为空字符串("";),所以Trim(&a)调用,传入string指针不为空nil(而是空字符串"";变量指针),此时返回的错误对象是nil,没有错;返回是空字串Trim以后的结果,或者空字符串;打印出来Trim(0xc000273a10)=


错误的判断


有时在函数处理过程中,可能会出现不同类型的错误条件;例如,对于文件处理场景;有时可能是文件路径错误,有时可能是文件的状态错误;当发生各种错误时,对错误的判断具有使用场景的价值。使用类型断言或类型判断(type-switch)这是一种非常有效的方法来处理这个场景,并且可以 根据错误场景进行补救和恢复。使用类型断言或类型判断(type-switch)这是一种非常有效的方法来处理这个场景,并且可以 根据错误场景进行补救和恢复。


看下面的代码


type NotFoundException struct{}?func (ne NotFoundException) Error() string{ return "NotFoundException"}?type NotAllowException struct{}?func (ne NotAllowException) Error() string{ return "NotAllowException"}?func ReadFile(path string) ([]byte,error){ n := len(path) if n <= 1{ return nil,NotFoundException{}}else if n <= 12{ return nil,NotAllowException{}}? return[]byte(path),nil}?func ReadOne(path string){ if rtn,err := ReadFile(path); err == nil{ fmt.Printf("ReadFile(%v)=%v

",path,rtn) }else{ switch err.(type){ case NotFoundException: fmt.Printf("ReadFile(%v) throw NotFoundException: %v

",err) case NotAllowException: fmt.Printf("ReadFile(%v) throw NotAllowException: %v

",err) default: fmt.Printf("ReadFile(%v) throw UnknowException: %v

",err) }}}


上面的代码ReadOne在函数中,有错误判断的处理方法; 在ReadOne函数里调用ReadFile函数,在ReadFile如果函数简单地实现,path长度不大于1,返回错误NotFoundException;如果path长度不大于12;返回错误;NotAllowException;其他正常返回;


ReadFile函数错误类型可以返回多种类型;ReadOne函数是通过的type-swtich的方式,对err判断对象的类型; 如果是NotFoundException执行逻辑;如果是,NotAllowException如果两种错误类型不匹配,则执行第三段逻辑; 错误类型NotFoundException和NotAllowException都在ReadOne定义函数上方的实际调用代码:


func TestException2(t *testing.T){ var s string? s = "/" ReadOne(s)? s = "/" ReadOne(s)? s = "/readme.txt" ReadOne(s)? s = "/home/readme.txt" ReadOne(s)}?===== OUTPUT ======== RUN TestException2ReadFile(/) throw NotFoundException: NotFoundException ReadFile(/readme.txt) throw NotAllowException: NotAllowException ReadFile(/home/readme.txt)=[47 104 111 109 101 47 114 101 97 100 109 101 46 116 120 116]--- PASS: TestException2 (0.00s)PASS




结束语


错误处理是每种编程语言中需要面对的问题,也是编程过程中必须考虑的问题;如果处理错误,代码的稳定性会很好。今天的文章通过代码实例向您介绍GO语言中有一些关于错误处理的知识;我们用代码练习,写一个更稳定的程序。今天的文章通过代码实例向您介绍GO语言中有一些关于错误处理的知识;我们用代码练习,写一个更稳定的程序。


欢迎继续关注 GO语言编程训练

?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


10.0.0.1是Cisco、smc等路由器登录IP,它属于私有A类IP地址范围。10.0.0.1是Cisco和Xfinity路由器管理界面的默认网关地址。除了10.0.0.1,还有192.168.1.1,192.168.0.1和192.168.124.1等多个IP地址作为其路由器的默认网关。
如果你想要修改无线路由器的WIFI密码,那么需要登陆到路由器管理界面进行修改,而路由器的常见登陆地址是:192.168.1.1
192.168.1.1是非常普遍的路由器默认登录入口地址。以前我们常用电脑来设置路由器,但现在随着手机的普及,越来越多的人选择手机登录无线路由器,并管理路由器网络。
192.168.10.1是可用作路由器登录界面地址的,拿到路由器翻转至底部查看默认登录地址,如果显示192.168.10.1,那么你是可以通过手机或电脑的浏览器打开此地址进入到路由器管理界面的。
10.10.100.100是一个私有内部的网络IP地址;仅在局域网内可以使用,外部网络是无法通过10.10.100.100地址登录或打开的。
192.168.1.1手机登录是指手机打开路由器192.168.1.1登录页面入口,打开192.168.1.1后需要输入用户名跟密码登录,然后进入路由器管理后台设置界面就可以管理你的路由器了。
h3c路由器的默认密码是什么? h3c路由器默认账号密码:用户名:admin,密码:admin。
路由器的密码就是wifi的密码,有些用户因为自动连接的关系时间一长可能就忘记了这个密码,那么该怎么重新设置呢?下面就带来了路由器密码忘了重新设置教程,快来一起看看吧。
买完路由器,家里要开始进行布置宽带网络,打算经常会遇到不懂路由器怎么安装和设置,今天编程之家小编介绍关于路由器安装与配置的方法,供你参考学习。路由器安装设置步骤详解安装路由器和设置路由器的步骤如下:
设置mercury路由器的方法如下:1、先将电信来的网线插路由器的WAN口,电脑插路由器的LAN口;
(pe制作u盘启动盘教程)一、启动U盘的作用与选择启动U盘的作用对于一个经常处理电脑故障的人来说是非常重要的一个工具,它可以用来安装系统,硬件测试,密码破解,硬盘分区、引导修复、数据恢复、备份重要文件(特别系统崩溃时)等等极其强大的功能,能够熟练使用PE,绝对能够成为一名
(windows7不能连接无线网)作为电脑的老用户,很多人跟喜欢用win7系统,在使用了一段时间的win10后不习惯,重装回了win7,但是发现win7发现不了无线网络。这个问题要怎么解决呢?下面小编就给大家提供win7电脑发现不了无线网络怎么办的解决方法吧。win7发现不了无线网络怎么办1、我们进入控制面板中的“网络和Internet”(控制面板可以在开始菜单中
(u盘维修软件)如今U盘已经不是什么新鲜的电子产品了每个人手里应该都有几个U盘吧您有没有在使用U盘时出现过U打不开需要修复或者格式化的情况?今天小编就给大家整理了7款U盘修复工具1CheckToolsU盘批量格式化软件U盘批量格式化工具,来自FristChip出品,CheckTools是一款通用的U盘修复工具,
(如何用u启动安装win7系统驱动)如果电脑遇到系统异常问题,必须重新安装,应用启动u盘进行重新安装系统是最快的方式,但仍有一些朋友不知道如何启动u盘重新安装系统,下面小边将启动u盘重新安装系统教程图与您分享。工具/原料:系
(u盘启动盘win10安装教程)u盘重装win10电脑系统步骤,今天教大家怎么用u盘来安装Windows系统当安装系统前我们需要准备的硬件工具一个大于等于16g的u盘,主要是usb30接口因为这样可以让装系统的速度更快还需要一台可以正常使用能上网的电脑跳转到安装系统的步骤因为我们把系统以及需要用到的文件都已经制作好了准备好了以上工具接下来就是准备软件工具我们需要用到两个软件第
(华硕u盘uefi启动不了)此前微软发布了预览版的Windows11,不过预览版属于未稳定的测试版,所以装机之家晓龙一直建议大家等待Windows11正式版发布再进行安装或升级,而在本月10月05日,微软正式为广大用户推送了Windows11正式版,与Win10不同,想要安装Win11
(用u盘安装win7系统图解教程)u盘安装win7系统教程图解,今天呢,准备教大家如何用我们的u盘启动盘给我们的电脑装系统电脑首先呢,我们要提前准备好制作好的u盘启动盘,那么接下来呢有一点需要注意的就是我们这个usb启动向的选择每一种品牌的电脑这个启动向快捷键的话可能会有区别一般是f9f10f11或者f12每种电脑的话可能会有一些区别我们
(如何让文件从u盘复制后不能使用)[闽南网]为了保护电脑中的重要文件,大家可谓是绞尽电脑脑汁,除了进行文件加密之外,我们还可以设置拒绝拷贝,防止他人通过U盘随意复制数据。本文详细介绍了设置屏蔽U盘拷贝电脑文件的方法,有需要的朋友可以参考。如何设置
(u盘安装系统取消主页锁定怎么办)小白从0开始安装WIN10--修改版1这是一篇很长很长的文章,并且后续还会根据实际情况以及与网友的沟通做出不断的修改,这是一个小白从0开始安装WIN10,包含如下问题:1.
(电脑电脑开机wifi不自动连接)电脑指示灯不亮1、供电的问题,可以查看下主机电源线与外部电源是否连接好,是否有线路故障等,当电脑电源不良也电脑会出现电脑开机没反应,这些需要做些简单的排除去确认。2、开机键问题,拔掉主板上的Re