编程错误常见归类

概要

我们在写代码的时候难免会犯点小错误,为了更好的避免这些错误我在这里总结了一下编程的常见错误

1、编译型错误

编译型错误⼀般都是语法错误,这类错误⼀般看错误信息就能找到⼀些蛛丝⻢迹的,双击错误信息也
能初步的跳转到代码错误的地⽅或者附近。编译错误,随着语⾔的熟练掌握,会越来越少,也容易解
决。
例如:在每句结尾该加分号的地方没有加。
在这里插入图片描述

2、链接型错误

看错误提⽰信息,主要在代码中找到错误信息中的标识符,然后定位问题所在。⼀般是因为
• 标识符名不存在
• 拼写错误
• 头⽂件没包含
• 引⽤的库不存在
在这里插入图片描述

3、运⾏时错误

运⾏时错误,是千变万化的,需要借助调试,逐步定位问题,调试解决的是运⾏时问题。

4、逻辑错误

程序想要读取一个数组的长度,结果这个数组的值为null,没有length这个属性。程序会抛出错误:Uncaught TypeError: Cannot read property ‘length’ of null
对于这种逻辑错误,是代码写得不对,应修复程序。
在像JavaScript,Python这类语言中,由于变量的类型是不确定的,在调用函数的时候,我们也很容易传入错误类型的变量,导致程序崩溃。在使用这类语言的时候,应该在变量的命名中体现该变量的类型。
减少null/None/undefind/NULL/nullptr这些空值的使用,使用空值容易导致冗余的非空判断,使得代码变得难看。而且也可能会忽略了对变量空值的判断,导致程序的崩溃。返回和传递空值,都不是一个好的做法。

5、可预见的错误

这种错误是程序员根据平时写代码的经验,前瞻性地预测到程序在执行过程中可能由于网络中断、文件不存在、文件权限不足等情况而导致的错误。
在Java、C++、Python等高级语言中,可预见的错误可以通过try…catch(…finally)语法来进行处理。就像下面这样子。
如果是在C语言这类不支持异常的语言中,由于语言处理和汇报错误的手段都很有限,一般只能通过函数返回错误标识供调用者检查。这种方式不好的地方在于调用者必须要在调用之后立刻检查错误,不幸的是这个步骤很容易被遗忘。所以在使用支持异常的语言时,遇到错误最好抛出一个异常,调用代码很整洁,处理逻辑不会被抛出的异常打乱。

6、不可预知的错误

这种错误是程序员在编写代码的时候没有考虑到的错误。
在Java语言中,所有Java定义的错误都继承自Exceptions类型,所以当系统抛出一个意料之外的错误时,可以通过捕获Exceptions类型的错误来解决。不过由于此类错误我们意料不到,所以即便捕获了有时候也无济于事。但我们可以捕获后记录一些错误信息到日志,包括出现这个错误时传入函数的参数值、一些环境变量和全局变量的值、还有错误的调用栈信息等,帮助我们后面对该错误进行分析。
在捕获这类错误的时候,也应该在程序调用的顶层去捕获,Catch完记得打好日志,记录详细的输入输出,异常原因等,然后通过异常报警通知给开发。
除了Java语言,其它大部分的语言也有这种可以捕获所有错误类型的错误类型,一般它就是其它错误类型的基类。

小结

如果在日常编程中减少这些编程错误的出现我们写代码的过程会顺利许多。

  • 33
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码中游侠沐墨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值