精华内容
下载资源
问答
  • try catch的用法

    2018-01-06 18:48:09
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 1.程序要健壮,必须要设计报错机制。 最古老,也是最常见,比如: bool CreateFile( ); //如果创建文件失败就返回false,否则返回...
    作者:pig pig
    链接:https://www.zhihu.com/question/29459586/answer/44494726
    来源:知乎
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

    1.程序要健壮,必须要设计报错机制。
    最古老,也是最常见的,比如:
    bool CreateFile( );
    //如果创建文件失败就返回false,否则返回true。
    这种报错方式,显然不好。因为它没有给出产生错误的具体原因。

    2.改进:一个函数或过程,会因为不同的原因产生错误,报错机制必须要把这些错误原因进行区分后,再汇报。
    比如:
    int CreateFile():
    //如果创建成功就返回1.
    //如果是因为没有权限,导致失败,返回-1。
    //如果是因为文件已经存在,导致失败,返回-2。
    //如果是因为创建文件发生超时,导致失败,返回-3。
    这样看上去,比【1】要好些,至少指出了比较具体的失败原因,但是,还不够。

    3.很多情况下,函数需要把详细的原因,用字符串的方式,返回:
    class Result
    {
    ....int State;//同【2】
    ....string ErrorMessage;//如果失败,这里将给出详细的信息,如果有可能,应该把建议也写上去。
    }

    Result CreateFile();
    //如果创建成功,返回的Result,State为1,ErrorMessage为null。
    //如果是因为没有权限,导致失败,返回的Result,State为-1,ErrorMessage为"用户【guest】没有权限在【C:\】这个目录下创建该文件。建议您向管理员申请权限,或者更换具有权限的用户。"。
    //如果是因为文件已经存在,导致失败,返回的Result,State为-2,ErrorMessage为"文件【C:\abc.txt】已经存在。如果需要覆盖,请添加参数:arg_overwrite = true"。
    //如果是因为创建文件发生超时,导致失败,返回的Result,State为-3,ErrorMessage为"在创建文件时超时,请使用chkdsk检查文件系统是否存在问题。"。

    4.我个人推崇上面这种方式,完整,美观。但是这种流程,容易与正常的代码混在一起,不好区分开。因此,Java、C#等设计了try catch这一种特殊的方式:
    void CreateFile()
    //如果创建成功就不会抛出异常。
    //如果是因为没有权限,导致失败,会抛出AccessException,这个Exception的Msg属性为"用户【guest】没有权限在【C:\】这个目录下创建该文件。建议您向管理员申请权限,或者更换具有权限的用户。"。
    //如果是因为文件已经存在,导致失败,会抛出FileExistedException,这个Exception的Msg属性为"文件【C:\abc.txt】已经存在。如果需要覆盖,请添加参数:arg_overwrite = true"。
    //如果是因为创建文件发生超时,导致失败,会抛出TimeoutException,这个Exception的Msg属性为"在创建文件时超时,请使用chkdsk检查文件系统是否存在问题。"。

    可见,上述机制,实际上是用不同的Exception代替了【3】的State。

    这种机制,在外层使用时:
    try
    {
    ....CreateFile( "C:\abc.txt" );
    }
    catch( AccessException e )
    {
    ....//代码进入这里说明发生【没有权限错误】
    }
    catch( FileExistedException e )
    {
    ....//代码进入这里说明发生【文件已经存在错误】
    }
    catch( TimeoutException e )
    {
    ....//代码进入这里说明发生【超时错误】
    }
    对比一下【3】,其实这与【3】本质相同,只是写法不同而已。

    5.综上,我个人喜欢【3】这类面向过程的写法。但很多喜欢面向对象的朋友,估计更喜欢【4】的写法。然而【3】与【4】都一样。这两种机制都是优秀的错误处理机制。

    6.理论说完了,回到正题,题注问:为什么不用try catch?
    答:这是因为,很多菜鸟,以及新手,他们是这样写代码的:
    void CreateFile( )
    //无论遇到什么错误,就抛一个 Exception,并且也不给出Msg信息。
    这样的话,在外层只能使用:
    try
    {
    ....CreateFile( "C:\abc.txt" );
    }
    catch( Exception e )
    {
    ....//代码进入这里说明发生错误
    }
    当出错后,只知道它出错了,并不知道是什么原因导致错误。这同【1】。

    以及,即使CreateFile是按【4】的规则设计的,但菜鸟在外层是这样使用的:
    try
    {
    ....CreateFile( "C:\abc.txt" );
    }
    catch( Exception e )
    {
    ....//代码进入这里说明发生错误
    ....throw Exception( "发生错误" )
    }
    这种情况下,如果这位菜鸟的同事,调用了这段代码,或者用户看到这个错误信息,也只能知道发生了错误,但并不清楚错误的原因。这与【1】是相同的。

    展开全文
  • Python之异常(try的用法

    万次阅读 多人点赞 2019-06-12 09:27:43
    Python之异常(try的用法) 什么是异常 异常: 程序在运行的时候,如果python解释器遇到一个错误,会停止程序的执行, 并且提示一些错误的信息,这就是异常 我们在程序开发的时候,很难将所有的特殊情况都...

    Python之异常(try的用法)

    • 什么是异常

    异常:
    程序在运行的时候,如果python解释器遇到一个错误,会停止程序的执行,
    并且提示一些错误的信息,这就是异常
    我们在程序开发的时候,很难将所有的特殊情况都处理,
    通过异常捕获可以针对
    突发事件做集中处理,从而保证程序的健壮性和稳定性

    在程序开发中,如果对某些代码的执行不能确定(程序语法完全正确)
    可以增加try来捕获异常

    try这个关键字来捕获异常
    try:尝试执行的代码
    except:出现错误的处理

    • try的示例

    1.简单用法示例

    try:
        # 不能确定正确执行的代码
        num = int(input('请输入一个数字:'))
    except:
        print('请输入正确的整数')
    
    print('*' * 50)
    

    2.提示用户输入一个整数,并使用8来除以用户输入的整数

    try:
        num = int(input('请输入一个整数:'))
        result = 8 /num
        print(result)
    # except ZeroDivisionError:
    #     print('0不能做除数')
    except ValueError:
        print('输入的值不是合法的整数')
    except Exception as r:
        print('未知错误 %s' %(r))
    # 没有预先判断到的错误怎么办?
    # ZeroDivisionError
    finally:
        # 无论是否有异常,都会执行的代码
        print('%%%%%%%%%%%%%%%')
    # ValueError
    
    • 异常的传递

    一级一级的去找,最终会将异常传递到主函数里

    def demo1():
        return int(input('请输入整数:'))
    
    def demo2():
        return demo1()
    
    # 函数的错误:一级一级的去找,最终会将异常传递到主函数里
    # try:
    #     print(demo2())
    # except Exception as r:
    #     print('未知错误 %s' %r)
    print(demo2())
    
    • 主动抛出异常

    需求:提示用户输入密码 如果长度小于8 就抛出异常

    def input_passwd():
        # 1.提示用户输入密码
        pwd = input('请输入密码:')
        # 2.判断密码的长度
        if len(pwd) >=8:
            return pwd
        # 3.如果<8就主动抛出异常
        print('主动抛出异常')
        #a.创建异常对象
        ex = Exception('密码长度不够')
        #b.主动抛出
        raise ex
    # 注意:只抛出异常而不捕获异常 代码会出错
    try:
        print(input_passwd())
    except Exception as re:
        print(re)
    
    • 断言

    可以理解为提前预言 让人更好的知道错误的原因

    def func(num,div):
        assert (div !=0),'div不能为0'
        return num/div
    
    print(func(10,0))
    
    • END
    展开全文
  • finally块是放置必须执行的所有代码的位置,无论try块是否引发异常。try-finally语句的语法是:try:Youdoyouroperationshere;......................Duetoanyexception,thismaybeskipped.finally:Thiswouldalways...

    您可以将finally:块与try:块一起使用。finally块是放置必须执行的所有代码的位置,无论try块是否引发异常。try-finally语句的语法是:try:

    You do your operations here;

    ......................

    Due to any exception, this may be skipped.

    finally:

    This would always be executed.

    ......................

    您不能同时使用else子句和finally子句。

    示例#!/usr/bin/python

    try:

    fh = open("testfile", "w")

    fh.write("This is my test file for exception handling!!")

    finally:

    print "Error: can\'t find file or read data"

    输出结果

    如果您无权以写入模式打开文件,则将产生以下结果-Error: can't find file or read data

    相同的例子可以更清晰地写成如下-

    示例#!/usr/bin/python

    try:

    fh = open("testfile", "w")

    try:

    fh.write("This is my test file for exception handling!!")

    finally:

    print "Going to close the file"

    fh.close()

    except IOError:

    print "Error: can\'t find file or read data"

    当try块中引发异常时,执行立即转到finally块。执行完finally块中的所有语句后,如果在try-except语句的下一个较高层中存在,则再次引发异常,并在except语句中对其进行处理。

    展开全文
  • 动词是用来表示动作或状态...今天我们一起来看一下吧~1动词原形及不定式的用法动词原形的用法1.除单三人称一般现在时,其它人称作主语,动词用原形。2.将来时态shall, will, should, would之后用动词原形。3.祈使...
    1f260f66da48a2290886f53f1729d7cc.gif

    f9e1d235083e24be2deaac477dcc7976.png

    动词是用来表示动作或状态的词。动词是英语中最重要的词汇,是句子的核心。几乎每个句子都必须有一个动词来担当谓语,说明主语是什么或做什么。因此,学好动词对提高自己的英语水平具有重要意义。今天我们一起来看一下吧~

    1动词原形及不定式的用法 动词原形的用法1.除单三人称的一般现在时,其它人称作主语,动词用原形。2.将来时态shall, will, should, would之后用动词原形。3.祈使句句子开头用动词原形。 4.助动词do, does, did之后用动词原形。 5.情态动词can、could、may, might, have/has to, must, need, dare ,ought to之后用动词原形。6.使役动词let、 make、have 之后用动词原形。 7.感官动词see、watch、notice、hear、 feel、find之后用动词原形(说明动作已经结束)。8.had better 之后用动词原形。9.why / why not 之后用动词原形。10.would rather dosth . than do sth . 11.prefer to dosth. rather than do sth./ prefer doing sth. to doing sth.  动名词的用法1.介词之后动词要用动名词形式(动词+ing) 2.部分动词之后的动词只能用动名词形式:enjoy, finish, practice, mind, spend,dislike, find , keep3.部分短语后省略了介词in: have fun/ problems/ difficulties/trouble /a good time doing  be busy doing, 4.be worth doing,  can’t help doing , feel like doing , do some doing sth.5.下面这些动词既可跟动名词又可跟不定式:like / love / hatedoing (doing表示习惯)(to do表示具体的动作) stop doing(表示停止)(doing表示开始做不定式的动作);remember , forget (不定式表示未做;动名词表示已做);try (doing表示试着做;to do表示努力做);  go on (doing继续做相同的事 to do继续做不同的事) begin , start (to do与doing区别不大) ; need (人作主语用to do ;物作主语用doing表示被动);mean(人作主语用to do表示“打算做”;事 / 物作主语用doing表示“意味着”);这些动词既可跟动词原形,又可跟ing形式:see,watch,hear.notice (用原形是指动作结束,ing表示动作正在进行)         动词不定式的用法1.ask/tell/want/order/teach/wish/wouldlike/invite/encourage sb. to do sth.2.ask/tell/want/order/teach/wish/wouldlike/invite/encourage sb. not to do sth. 3.Help...(to) dosth.  4.主系表 + 不定式(to do)5.主系表 +for sb + 不定式(to do)  6.部分动词既可跟动名词又可跟不定式:(同动名词 6)7.疑问词+不定式(to do)可以把复合句变为简单句,(to  = 主语+will/would/can) 2英语动词双写规则及常见动词 英语动词双写规则必须同时满足以下 4 个条件1) 该动词的发音以重读闭音节结尾; 重读闭音节就是指在一个音节中,元音字母不是发它本身的字母音,以辅音字母结尾,而且是重读音节的音节。比如apple划音节就应该是ap/ple前面那个ap是一个音节以辅音字母结尾就是闭音节。2)结尾闭音节符合“1 个辅音字母 + 1 个元音字母 + 1 个辅音字母”3)结尾的辅音字母不是"x";4)该动词的拼写规则没有例外;如:sit---sitting/begin---beginning(重读在gin这个音节上,相当与把gin改成双写的) 像travel这种重读不在的vel,可以为travelled,也可以是traveled.举两个很经典的例子:forbid---forbidding(重读闭音节,双写)prohibit---prohibiting(重读在第二音节,非重读闭音节,不双写)  情态助动词用法简述1.dare, need① dare作情态动词用时, 常用于疑问句、否定句和条件从句中, 过去式形式为dared。 例:How dare you say such horrible words to me?② need 作情态动词用时, 常用于疑问句、否定句,相当于肯定句中一般用must, have to, ought to, should。例:Need I finish the work today?Yes, you must. / No, you needn’t.③ dare和 need作实义动词用时,有人称、时态和数的变化,在肯定句中,dare后面常接带to的不定式,在疑问句和否定句中,dare后面可接带to或不带to的不定式,而need后面只能接带to的不定式。例 She doesn’t dare (to)answer.2.shall, should① shall 用于第一人称,征求对方的意见。例:What shall I do ?② shall 用于第二、三人称,表示说话人给对方的命令、警告、允诺或威胁。例:You shall be punished,you bad boy!3.will, would①表示请求、建议等,使用would使语气更加缓和。例:Would you give me a cup of coffee, please?②表示意志、愿望和决心。例:I will never do that again.③ would表示过去反复发生的动作或某种倾向。例:During that summer, he would visit me everyother day. ④表示估计和猜想。例:It would be about may when she come back toChina.4.should, ought to① should表示“应该”,ought to表示义务或责任,语气更严重。例:I should help her because she is introuble.②表示劝告、建议和命令,should, ought to可通用,但在疑问句中常用should。例:Should I open the window?③表示推测, should , ought to (客观推测), must(主观推测)。例She must pass the exam. (断定)  3能充当谓语的动词1.定义:能够充当句子谓语的动词就是主动词(main verb) 例:Reading makes a full man. (make在这句话里为主动词)2.类别:①连系动词:用来表示身份,状态,性质,特征,无法单独使用,和表语一起构成系表结构A 状态系动词:包括be动词,continue,keep,stay,remain,stand等例:The girl keeps crying.(持续的哭的状态)B 表象系动词:表示“看起来像”,包括 look,seem,appear等例:She looks like her mother.C 感官系动词:与人的五感有关,嗅觉,听觉,视觉,味觉,触觉,包括feel,look,sound,smell,taste例:It taste good.D 变化系动词:表示从一种状态变化至另一种状态,包括get,become,turn,dome,grow,fall等例:Yesterday's little girl becomes today's beautiful woman.②实义动词:及物动词和不及物动词例:I agree with you.(及物)The game begins.(不及物)* 实义动词又分为短暂性动词和持续性动词,短暂性动词一般不用while引导,可做状语表示一段时间,但持续性动词不可以。4常见主动表被动不定式作后置定语,放在被修饰词后面,不定式与前面被修饰的名词或代词有动宾关系,又在句子中与另一名词或代词有主谓关系,此时,不定式要用主动表被动含义。例如:I have much workto do. 我有许多要做的事情。(与work有动宾关系,与I有主谓关系)Jay is looking fora room to live in.  Jay在找一间住的房间。(与room有动宾关系,与Jay 有主谓关系)She has a familyto support.她要维持一个家庭。(与family有动宾关系,与she有主谓关系) 不定式修饰作表语和宾语补足语的形容词时如下difficult, easy,comfortable (舒适的、安逸的),convenient(便利的,方便的),hard, cheap,expensive, 等此时结构为:主语+系动词+形容词 + 不定式;动词+宾语+形容词+不定式。例如:The question isquite difficult to answer. 这个问题真的很难以回答。The work is easyto do. 这项工作很轻松。I found the buscomfortable to ride in. 我觉得这种公交车坐着很舒服。

     • END • 

    c27a2892313c3f9a2ce3d56d4dd53551.gif

    还没有关注笨笨口语视频号

    记得关注并点赞哦

    更多实用干货

    ☟ ☟ ☟ ☟ ☟ ☟

    b1160dbba33a73b6b002bf52a19dfcd7.gif

    可☟ 以☟ 点☟ 点☟ “在看”☟ 吗☟

    谢 ☟ 谢☟ 你☟

     Here☟

    ☟ ☟ ☟

    展开全文
  • 小简老师动词是用来表示动作或...今天和小简老师一起来看一下吧~动词原形及不定式的用法动词原形的用法1.除单三人称一般现在时,其它人称作主语,动词用原形。2.将来时态shall, will, should, would之后用动词原...
  • Python之异常(try的用法) 什么是异常异常:程序在运行的时候,如果python解释器遇到一个错误,会停止程序的执行,并且提示一些错误的信息,这就是异常我们在程序开发的时候,很难将所有的特殊情况都处理,通过异常...
  • Nginx try_files用法

    千次阅读 2019-09-26 10:17:22
    如果所有的文件都找不到,会进行一个内部重定向到最后一个参数。 只有最后一个参数可以引起一个内部重定向,之前参数只设置内部URI指向。 最后一个参数是回退URI且必须存在,否则将会出现内部500错误。 示例 ...
  • try catch finally 用法

    2017-08-20 20:41:00
    如有不足地方,欢迎批评指正 1、首相简单介绍一下java中错误... 在java.lang软件包中有一个java.lang.Throwable类,这个类是java中所有错误和异常超类。 在java中错误和异常继承主要有两个: 分别为Err...
  • 所以提出了try...except(这个javatyy...catch很像)。一个try至少带一个except(或finally,见下一个),except负责处理异常,可以处理一个或多个,多个可以用括号括起来,逗号分隔,或者不写表示处理所有。1 try...
  • 背景: 我们经常在开发中使用到抛异常问题,一般朋友嫌麻烦,直接将异常写在方法名上,采用throws Exception,这样最简单,把所有的异常全部丢出去了。这么做很简单,并且我接触到很多系统,都是在前端把校验...
  • js 中try catch用法

    2020-08-11 18:08:31
    可以用来判断,你可控错误,也就是说你很清楚知道这里是有可能”出错“,而且你很清楚知道什么前提下会出错,你就是要故意利用报错信息来区分错误,后续程序会解决所有的出错,让程序继续执行。 例如 var ...
  • try-catch的使用(简单用法 ) c#中异常捕获 ...try ...如果try中的代码没有出错,则程序正常运行try中的...如果try中的代码一但出错,程序立即跳入catch中去执行代码,那么try中出错代码后的所有代码就不再执行了.
  • 异常名称 描述BaseException 所有异常基类SystemExit 解释器请求退出KeyboardInterrupt 用户中断执行(通常是输入^C)Exception 常规错误基类StopIteration 迭代器没有更多值...
  • 在浏览器执行js脚本的过程中,当出现脚本错误但是没有进行异常捕捉的时候,出错行以下的所有代码将停止执行,这时就需要加上异常捕捉。 try: 里面是自己觉的容易出错的逻辑代码。 catch: 中是当try中的代码出现错误...
  • 异常时java里一个重要组件之一,几乎所有的代码里面都会出现异常,为了保证程序在出现异常之后可以正常执行完毕,就需要进行异常处理。 所有的异常都是由Throwable继承而来,其中Error是无法有我们手动抛出异常,...
  • 本文实例分析了Python中异常处理try/except/finally/raise用法。分享给大家供大家参考,具体如下:异常发生在程序执行过程中,如果python无法正常处理程序就会发生异常,导致整个程序终止执行,python中使用try/...
  • 本文实例分析了Python中异常处理try/except/finally/raise用法。分享给大家供大家参考,具体如下: 异常发生在程序执行过程中,如果python无法正常处理程序就会发生异常,导致整个程序终止执行,python中使用try...
  • 20 03 2014python with语句的用法今天在看Mentor要求...with是python2.5以后才有,它实质是一个控制流语句,with可以用来简化try-finally语句。它主要用法是实现一个类__enter__()和__exit__()方法,基本形式...
  • ThrowableThrowable是Java异常顶级类,所有的异常都继承于这个类。Error,Exception是异常类两个大分类。ErrorError是非程序异常,即程序不能捕获异常,一般是编译或者系统性错误,如OutOfMemorry内存溢出...
  • 这是python中用作异常处理语句。... '''异常父类,可以捕获所有的异常''' print ("0不能被除") return False else: '''保护不抛出异常代码''' print ("没有异常") ...
  • try 和 except 一般是在一段语句中搭配使用,用于对某代码块捕捉异常,并且可返回易于理解异常文件说明。 pass不建议使用会导致错失错误信息 ...BaseException 所有异常基类 SystemExit 解释器请求退...
  • 1.try{ }catch(){ }的用法 public class ExceptionTest { public static void main(String[] args) { int a = 1; int b = 0; try { System.out.println(a / b); } cat...
  • ReentrantLock与 synchronized对比 最近有在阅读Java并发编程实战这本书,又看到了ReentrantLock和synchronized对比,发现自己以前对于RenntrantLock理解很片面,特此做...所有已知实现类:ReentrantLock,Ree...
  • try-catch使用

    2018-12-18 10:58:33
    try-catch的使用(简单用法 ) c#中异常捕获 语法:   try ...有可能出现错误的代码写在...如果try中的代码一但出错,程序立即跳入catch中去执行代码,那么try中出错代码后的所有代码就不再执行了.     例1...

空空如也

空空如也

1 2 3 4 5 ... 13
收藏数 244
精华内容 97
关键字:

try的所有用法