美文网首页
关于异常的又一理解

关于异常的又一理解

作者: 小星star | 来源:发表于2020-02-19 22:01 被阅读0次

最近在对Ren'Py游戏机器汉化的时候,收获了对异常的更深的理解,之前的理解在前一篇文中,这里只说新的理解

当我们用一个翻译接口去翻译一个文本的时候,大多数句子是可以翻译的,i have a apple.
但是某些句子可能很奇怪,如,(lucy) can't say [lamer] ,这些夹杂着复杂符号(可能是从程序中产生),总之,文本中就出现了这些奇怪的句子,加入这个奇怪的句子在第50句。
我们从第一句开始翻译,然后翻译到第50局,然后崩溃,控制台显示一大串error,然后我们的翻译终止了。

我们有三个选择,直接去文件里,把那句话修改一下;或者加一个if判断过滤一下;或者增加try语句,捕获异常。

我的理解是这样,去文件里修改,是最不好的,因为这样会破坏原文件,且,如果需要修改的地方太多,就很难操作。
加一个判断挺好的,但是最好判断那些 经常发生的错误。 假如在一个待翻译文本中,挺多句子都存在同样的格式问题,我们加上if,过滤分批处理就好了。

但是如果只有少数部分出错,我们只需要把它认定为异常,然后单独处理,这样就会很方便。

事实上,能用if来实现try的功能,但是我们有时候为了逻辑清晰,可能需要使用try。
而且,在代码块 的 运行频率上来说,把相对很少发生的情况使用异常捕获,比使用if更快。

我们在开车
if (提前知道堵车){
我们绕道
}
else{
我们按照预定的路开车
}


try{
    我们开车
}
catch 发生地震{
    我们赶紧别开车了,赶紧跑路,保证安全
}

这个例子中,开车的时候,堵车这个情况的发生频率还行,我们加上if而不是使用try。

但是我们开车的时候,发生地震的概率要低得多,所以我们要使用try,而不是if。

为什么呢?因为if-else总是需要判断,对于 堵车 这件频繁的事件来说,我们 只需要 判断一下就能避免堵车。

但是对于 地震 / 火山喷发 / 冰雹 / 这种很低概率的事情,我们不用每次开车的时候都想着这件事,我们不用每天出门的时候都去官网查一下地球最近的情况。

一个 if-else 重复判断,耗费少量时间,但是对于 两个五五开的分支的时候,非常有效。

一个try-catch 不需要重复判断,节省了 相对于if-else的判断时间,但是一旦 发生了异常(如地震),就需要花费更多的精力 来处理 catch中的语句。

所以,我们使用if-else 还是 try-catch 只要是衡量 分支的频率来决定的,二者相差不大都用if - else;当两个分支的相差概率很大的时候,采用try-catch。

而且,异常捕获,异常处理,这个”异常“二字,就是在 提醒,我们的程序很少碰到的情况,这是使用异常是非常合理的。如果我们的程序经常碰到某些情况,那就不叫”异常“。

使用 For loop,加具体处理时间来进一步解释。

相关文章

  • 关于异常的又一理解

    最近在对Ren'Py游戏机器汉化的时候,收获了对异常的更深的理解,之前的理解在前一篇文中,这里只说新的理解 当我们...

  • Exception和Error的区别?

    1:异常的理解 2:Throwable Exception Error的设计与分类 3:关于异常的捕获或者抛出的选...

  • 异常的理解

    异常处理的理解 第一种情况: 使用try-catch来捕获错误;那么这一次调用出错后不会退出,会继续向下运行; 代...

  • 关于 Power Query M语言异常的理解

    异常是由程序在运行过程中出现的各种无法预知的错误导致的、当这种错误发生后程序的执行会中断在异常位置而不会继续执行后...

  • 异常处理实践

    文章来源: 陈同学|异常处理实践 本文分享自己关于异常处理的理解。 产品是2B业务,且用户量小,因此以下思考均基于...

  • 理解JAVA异常

    异常 1. Throwable: 有两个重要的子类:Exception(异常)和Error(错误) 2. Erro...

  • 关于异常

    异常包括检测异常和非检测异常,开发人员在使用的时候通常使用非检测异常,认为检测异常没有什么用,实际上这种思想是错误...

  • 关于异常

    参考资料:JVM如何处理异常深入详解 一、Java 异常的概念和分类 所有的异常都派生于Throwable类的一个...

  • 关于异常

    异常一般是指运行期(此处特指Exception类)会发生的导致程序意外中止的问题,是一种对问题的描述后的封装对象。...

  • Objective-C - 异常处理(NSException)

    苹果关于异常的详细文档关于自定义异常或者扩展:Objective-C中处理异常是依赖于NSException实现的...

网友评论

      本文标题:关于异常的又一理解

      本文链接:https://www.haomeiwen.com/subject/dtvzfhtx.html