错误问题太多人解决不了

我是大学信息系的,但信息系的学生并不是所有的都是编程专业的。最大的问题不是技术问题,而是太多人无法自己修复错误。

我身边的朋友都比较好,但连他们都被一个简单的错误绊倒了,问我。

这一次,我想到了解决错误的基本方法,我认为。我想如果我能做到这些事情,我就不会被一个简单的错误绊倒。

也许我应该说更多,因为这是我自己的看法。
另外,请注意,这不是特定于案例的解决方案,因为这一次不是特定语言或命令的案例。
另外,为了说明起见,有代码看起来是“这是什么”,但它只是为了说明,所以请不要参考代码。

解决错误的途径

第一级谷歌

我准备了一个简单的c代码。

错误1.c
int main(void) {
    int n = 10;
    int a[n];
    for (int i = 0; i <= 20; i++) {
        a[i] = i;
    }
    return 0;
}

这显然有问题。
当我运行它时,我对segmentation fault 很生气。很明显。习惯的人会是“哦,你是在数组外赋值”。

但是,如果您是编程初学者,或者如果您的库中有一个您根本不知道的错误,您不知道该怎么做。

但别担心。一个人犯的错误通常是别人犯的。所以,我确定有人在网上提问,或者有一个解释网站在网上某个地方预测错误。
所以我们上网查一下。

级别 2 阅读错误说明

我认为无法解决错误的人经常在这里绊倒。
在级别 1 示例中,错误文本显示在一行中,但在某些情况下,即使您滚动,错误文本也可能继续显示。程序越复杂,错误语句就越可能长。然而,重要的句子却少得惊人,而且我认为它们中的大多数都使用很多行来指示错误的位置。

例如,假设您有一些这样的 Python 代码:

你好r2。 py
import numpy as np

def func1():
    a = np.array([1,2,3],[4,5,6])
    return a

def func2():
    return func1()

arr = func2()

当我运行这个

Traceback (most recent call last):
  File "/Users/hoge/workspace/error2.py", line 10, in <module>
    arr = func2()
  File "/Users/hoge/workspace/error2.py", line 8, in func2
    return func1()
  File "/Users/hoge/workspace/error2.py", line 4, in func1
    a = np.array([1,2,3],[4,5,6])
TypeError: Field elements must be 2- or 3-tuples, got '4'

我很生气。

底部的TypeError部分很重要,说明它是什么类型的错误,其他的则更长,表示错误的位置。

这只是一个例子,所以如果它这么短,你很幸运,但还有很多更长的。如果很短,你可以搜索最差的错误句子,但如果很长,你会达到搜索关键字的限制,你将无法搜索。因此,重要的是要了解写在哪里。

如果您觉得英语阅读困难或困难,让我们翻译一下。仅这一点就使许多人更容易阅读错误。让我们看看重要的部分是什么。而如果你看了错误也看不懂,也解决不了,那就去搜吧。

第 3 级 思考如何搜索

如果您在搜索时不考虑任何事情,您可能永远找不到您正在寻找的答案。

例如,假设您有这样的命令:

$ ls -h

这不是错误,但假设您不理解此命令的含义。这时候,很多人竟然出乎意料地直接搜索这个命令来了解它的含义。

那么怎么样,搜索结果只出来的是关于雷克萨斯的。单独使用ls 搜索会产生类似的结果,但在这种情况下,搜索方法存在问题。

如果您在搜索引擎上的单词开头添加“-(连字符)”,它将搜索该单词以使该单词不出现。所以,我们需要改进我们的搜索方法。
在这种情况下,您需要通过用双引号将其括起来以包含绝对“-h”来搜索“ls“-h”,或者搜索“ls h option”。

对于搜索力来说,不仅要选词,还要了解这些搜索引擎的特点。

级别 4 考虑原因,而不仅仅是直接的解决方案

人们想马上放轻松,所以当他们调查时,他们首先尝试找到解决方案(偏见)。
然而,它并不总是唯一的解决方案。发现同样的错误,但是库不同或者环境不同。在这种情况下,您可能会看到与您想要的不同的解决方案。

这是一个真实的故事,有朋友尝试安装一个库,不知道能不能在MacOS上使用,但是没有成功,于是求助。总之,该库不应该在 Mac 中使用的 Apple M1 芯片(arm64)上使用,而必须在 Intel 的芯片(x84_64)上使用。
有那么一瞬间我几乎要放弃了,但又突然想到,“用M1芯片是不是不能创建x84_64环境?”我朋友真正想运行的库也使用 Rosetta 来工作。

我想说的是,“思考错误发生的原因是多么重要“关于它。
直接去调查解决方案是好的,但是如果你知道它为什么会解决它,你可能只要想一想下次出现类似错误时该怎么做就可以解决它。正如你所看到的,解决方案并不总是会出现直接出。
所以不要成为一个脑残的搜索机器,也不要忘记思考。

调查错误内容的原因也意味着调查问题所在。考虑是库问题、环境问题还是语法问题。
如果在不知道问题出在哪里的情况下搜索,可能会发现即使是语法问题,即使搜索列出库解决方案的页面也可能找不到。图书馆的官方页面没有注意到原因不同。
你可能仍然想出一个解决方案,但你最终可能会浪费很多时间。
如果您认为正确思考原因可以节省时间,您可能会认为思考的努力没什么大不了的。

5级 如果还是不明白,请提问

如果您已经走到了这一步,但仍然不明白,请提出问题。
提问并不难,但我们不应该努力提问。

您只是在寻找 1 级,还是您在遇到错误时询问某人而没有自己做任何事情?
这对提出问题的人没有帮助,被问到的人可能需要做我们一直在谈论的事情。在问题方面浪费时间。
所以,如果你问一个问题,至少告诉我们当前的情况、环境以及你尝试过的事情。如果可能的话,试着找出似乎是原因的部分并传达你自己的解释。通过这样做,传达了提问者的努力,缩短了解决所需的时间,并且不会浪费其他人的时间。
问问题的时候,要注意问问题的方式,这样如果你问认识的人,或者如果你在网上问问题,你可以有一个顺利的关系,你可以留下一个高质量的解决方案。

在最后

总结起来,基本上有两件事很重要。 “搜索”和“正确思考”。如果我能做到这一点,至少我认为我可以避免我什么都不懂的情况。

除了上述之外,还有各种解决问题的方法,例如使用调试工具,作为选项显示更详细的信息,以及尝试做一些有经验的事情,但我已经描述了任何语言或库都可以说的事情.

等级本意是代表难易程度,但5级提问是不得已而为之,而我选择了最高等级的意思是我已经尽力了,所以在难度方面,它可能有点进行了微妙的调平。

我自己认为这已成为一个冗长而笨拙的句子,但是如果您能通过阅读这句话来帮助尽可能多的人,我将不胜感激。


原创声明:本文系作者授权爱码网发表,未经许可,不得转载;

原文地址:https://www.likecs.com/show-308633055.html

相关文章:

  • 2021-04-17
  • 2021-07-12
  • 2021-09-04
  • 2021-12-18
  • 2022-12-23
  • 2022-12-23
  • 2021-09-13
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2021-07-03
  • 2021-08-15
  • 2022-12-23
相关资源
相似解决方案