‫欢迎回来｡
‫在本视频中, 您将学习如何捕捉错误, 以及在发生错误时采取措施,
‫而不会使程序崩溃或发生类似情况｡
‫所以catch和finally一起使用的一个常见用法是获取和使用tri块中的资源, 处理异常情况和catch块,
‫释放final块中的资源｡
‫这意味着我们将在这段视频中介绍的内容｡
‫因此, 为了遇到错误, 让我们执行以下操作｡
‫我们使用控制台右行｡
‫输入CW双击, 这里我说请输入一个数字, 我们只是提示用户输入一个数字,
‫然后我们希望将其存储在用户输入中, 这将是一个字符串变量,
‫它将读取用户必须输入或必须说的任何内容, 最后应该是一个数字, 对吗？
‫这就是我们的目标｡
‫但是如果我们执行以下操作, 用户输入为int, 我们使用int, 点传递｡
‫您已经看到了pass, 我们尝试解析用户在此处给出的用户输入｡
‫我们尝试把它变成一个整数, 现在如果你运行这个程序, 请输入一个数字, 在3期间,
‫我们的程序很好, 实际上我们在这里添加一个控制台点读键｡
‫因此, 我们更清楚地看到, 程序仍然是好的｡
‫所以请输入一个数字｡
‫我输入5, 程序还在运行, 没有崩溃.
‫一切正常, 现在让我们再运行一次｡
‫但是, 我们不输入数字, 而是添加一个字母或写一些文本｡
‫那就不是了｡
‫在我的例子中, 我们在第16行所做的｡
‫所以我打算输入, 程序崩溃了, 它说处理的系统格式异常输入字符串的格式不正确｡
‫好吧, 我会的
‫因此, 用户给出的字符串格式不正确, 无法将其解析为整数｡
‫这就是格式异常的意义所在｡
‫现在, 我们可以通过创建一个try和catch块来处理这个问题｡
‫假设我们使用try, 这里有一个选项可以使用｡
‫试着接住｡
‫或者我可以简单地使用try双击, 它会为我创建一个try catch异常抛出｡
‫所以现在我想做的是, 我想尝试代码, 如果它不工作, 那么我不希望我的程序崩溃｡
‫这就是我们要尝试的原因
‫因此无论什么错误, 代码错误在运行时错误代码是在这里的意义上都会被试图执行｡
‫如果它不起作用, 那么渔获物｡
‫将执行BLOCK｡
‫所以无论这个主体中的内容还是花括号中的内容都将被执行｡
‫所以现在我们只有掷球了｡
‫现在我们去掉throw, 因为它还在扔｡
‫Yara现在让我们写一些东西到控制台, 如果一个错误发生｡
‫所以我们说格式异常｡
‫请下次输入正确的类型｡
‫这是我们知道的类型｡
‫一般用户不会知道这一点｡
‫所以这里你可以写这样的话请不要输入字母, 只输入数字之类的.
‫让我们再看一遍｡
‫让我们运行一个错误再进入一个错误, 然后我们就把这个信息格式化成一个异常｡
‫请下次输入正确的类型｡
‫我们的程序没有崩溃, 所以我们没有遇到这个异常, 我们的程序或我们的ID告诉我们, 嘿,
‫有问题, 你应该很好地处理你的代码, 对吗？
‫这就是一般的结构｡
‫你有一个try, 所以你在这里尝试一些代码, 可能会遇到错误, 可能会有一个异常,
‫然后你有一个catch块, 每当destroy失败时, 就会执行这个块｡
‫所以只要有错误, 这个catch块就会被执行｡
‫我们这里有一个例外｡
‫异常是一个非常一般的错误｡
‫所以它可能是任何类型的异常, 但是如果我们真的遇到了这个错误, 那么让我们去掉这段代码,
‫我们将看到我们创建了什么类型的异常｡
‫所以我只需要输入一个字符串就行了.
‫实际上什么也没发生, 因为我们不扔｡
‫所以我们别再这样了｡
‫让我们像之前看到的那样掷球｡
‫只要抛出错误, 我们就可以再次运行｡
‫我刚在这里输入了一些东西, 它说系统转发异常｡
‫因此, 我们对实际异常有了更精确的信息｡
‫现在我们知道了, 好的, 这是一个格式异常, 所以我们应该用格式异常代替异常｡
‫所以这里有很多例外｡
‫但是我们在这里使用的是一个格式异常｡
‫正如您在这里所看到的,
‫有一个名为system的类, 它是格式化异常, 以及当参数的格式无效或复合格式字符串格式不正确时所引发的异常｡
‫这就是我们这里的情况｡
‫所以我们先把这个抛和去掉｡
‫没关系的
‫现在让我们回到另一个时代
‫现在, 让我们创建一个很长的数字｡
‫不能放入字符串的东西｡
‫因为, 正如你可能猜到的, 或者你可能记得的, 一个字符串只有特定的空间｡
‫假设我不确定有多少个数字能做到这一点, 但假设一个整数只能存储这么多的数字｡
‫所以这里所有的都不起作用, 因为它是溢出的｡
‫所以字符串处理的信息太多了｡
‫所以如果我现在输入这个｡
‫我得到一个输入系统溢出异常｡
‫所以我们在这里｡
‫系统溢出异常｡
‫你对RN32来说不是太大就是太小｡
‫好吧, 我会的
‫我就是这么说的｡
‫现在我们还需要捕获该异常｡
‫所以我们有两种方法来处理它｡
‫所以要么我们在这里使用一个不同的异常, 我们就用异常｡
‫所以我们只是处理所有其他的一般异常, 我们简单地说, 控制台点, 红线,
‫一般异常, 出错了｡
‫我们再创建一个很长的数字, 就像这样, 然后输入那个｡
‫我们看到了一个一般的异常, 尽管这是一个溢出异常｡
‫所以你可以这样处理｡
‫所以如果你不知道所有不同类型的异常,
‫或者你不想单独捕获它们, 你可以这样做, 或者你可以精确地输入一个溢出异常.
‫现在它可以工作了, 您会看到一个系统溢出异常｡
‫让我们再运行一次, 请输入一个数字, 在这里创建一个很长的数字｡
‫我们仍然会得到一般异常, 因为我们没有输入不同的文本溢出异常｡
‫对于32英寸的来说, 数字太长或太短｡
‫所以我们再看一遍｡
‫并且溢出异常编号对于32中的来说太长或太短｡
‫好吧, 我会的
‫这就是我们通常捕获异常的方法｡
‫如果还有其他异常可以运行, 如您所见, 则会出现参数为null的异常｡
‫让我们来看看这意味着什么｡
‫如果我们能得到它, 我们看看｡
‫一个例外｡
‫请下次输入正确的类型｡
‫所以即使它是空的, 在我们的例子中, 我们也不会得到这个null异常, 因为我们的输入,
‫即使我们什么都没输入, 仍然有一个非null的空字符串｡
‫所以我们不根据这个实际的异常来运行这个｡
‫正如您在这里看到的, 无论您何时尝试执行代码, 英特尔都会在这里为您提供一些信息｡
‫这真的很有用｡
‫你可以看到有参数空异常, 格式异常和溢出异常｡
‫所以我们甚至可以在这里添加另一个异常, 调用一个参数为空的异常或者参数为空的异常｡
‫我们说参数为空的异常｡
‫数值现在是空的｡
‫所以为了进入这个时代, 我们必须使用null, 我们还没有讨论过, 但是我们稍后会讨论｡
‫如果我们有他们, 你可以试着这样做｡
‫因此, 如果您已经看过值得注意的视频, 您可以尝试运行到该错误｡
‫好吧, 我会的
‫现在您已经看到了如何使用try catch｡
‫现在我想在这段视频里再给你们看一件事, 它终于是这样完成的｡
‫所以你使用了final关键字, 然后再次使用花括号, 在这个代码块中,
‫在这个代码体中, 你输入了在任何时候都应该执行的代码.
‫试着抓住我们这样做｡
‫无论错误是否运行或错误是否不起作用｡
‫没有错误｡
‫最后, 我们还是会被跟注｡
‫所以这就叫反正｡
‫所以也就意味着｡
‫我们马上就知道了｡
‫我们来看一个箭头, 我们看到有一个四分钟的异常, 然后我们看到它被称为anyways,
‫这是我们的最后一个块｡
‫这个finally代码块背后的想法是, 例如, 如果你试图启动一个互联网连接,
‫或者如果你试图写入一个文件, 最终可能会发生错误｡
‫假设互联网连接中断,
‫或者您无法访问要写入的文件, 或者可能出现其他异常, 您希望以任何方式关闭连接或文件｡
‫你已经打开了一个文件, 现在你试着写入这个文件, 当你在try块中写入这个文件后,
‫也许它起作用了,
‫也许它不起作用了, 但是你肯定想做的是再次关闭这个文件, 或者你试着从互联网上下载一些东西, 不管它起作用了还是不起作用｡
‫之后你需要关闭与互联网的连接, 这是你在文件中要做的事情｡
‫这是非常方便和非常重要的工作时, 输入输出类型或是的, 一般与连接到互联网,
‫蓝牙或任何东西｡
‫所以, 正如你所看到的, 有很多关于尝试和捕捉的知识, 但最重要的事情你已经看到了｡
‫那么现在你知道怎么用try了你知道怎么用catch了怎么找出异常｡
‫在某些情况下, 这并不那么明显｡
‫因此, 在某些情况下, 您不会检查可以运行的异常类型｡
‫但是如果你在代码中遇到了异常, 你就知道是哪种异常了, 因为Microsoft
‫Visual
‫Studio会告诉你是哪种异常, 然后你一定要尝试捕捉这个异常, 或者使用一个通用的异常类型okeydokey｡
‫所以现在对你来说是一个小小的挑战, 因为总是要有一个小小的挑战, 否则你可能会有点, 嗯,
‫无聊, 或者你可能会有点懒惰｡
‫这真的很重要, 你尝试键入的代码, 以及检查出来, 为自己｡
‫所以这个小挑战是请继续除以零｡
‫这很简单｡
‫用两个变量除以零就行了｡
‫好吧, 让我们来试试｡
‫所以我会尝试除以零｡
‫我将使用两个整数和一个整数｡
‫一是五, n是零｡
‫现在我将在这里输入一个结果｡
‫结果等于数字1除以数字2｡
‫现在我们来试试, 在使用try和catch之前, 不要使用try和catch.
‫那我们开始吧｡
‫请输入一个数字, 然后除以零异常, 我希望你处理｡
‫所以现在让我们添加一个尝试和捕捉｡
‫所以试着让它简单点｡
‫我们进去吧
‫在这里尝试并使用块双制表符｡
‫现在, 在尝试中, 我想运行它｡
‫如果它不起作用, 我只想写一些像C double的东西｡
‫你不能被零除｡
‫现在又是这个｡
‫我们刚才遇到的例外是, 我们来看看.
‫被零除尝试被零除, 这被称为被零除异常｡
‫所以如果你想找到的话, 你可以在这里找到｡
‫所以我就用它｡
‫我将把这个异常替换成除以零的异常｡
‫现在, 让我们再次运行该代码｡
‫请输入以前的数字, 然后它说可以被零除｡
‫好吧, 我知道了
‫所以我希望你们尝试一下, 我希望你们做到这一点｡
‫现在你可以看到你如何创造你自己的尝试和捕捉｡
‫在下一个视频中, 我们将继续使用一些更花哨的东西｡
‫那到时见｡