澳门在线威尼斯官方 > 电脑操作 > 那么些相关

原标题:那么些相关

浏览次数:155 时间:2019-11-10

 

星期日多码文,明日上午风华正茂篇,前不久再来风姿浪漫篇:

在线编制程序:

在线预览:http://github.lesschina.com/python/base/oop/3.相当相关.html

代码裤子:

1.异常¶

1.1 try...except¶

又到了开新课的时候了,小明同学此次提前预习了知识,乘着老师尚未来就在黑板上写下了这段Code:

In [1]:

def main():
    try:
        1 / 0  # ZeroDivisionError: division by zero
    except ZeroDivisionError as ex:
        print(ex)


if __name__ == '__main__':
    main()

 

division by zero

 

1.2 try...except...else...finally¶

小潘同学刚进去就看到了,自语道:“try...except抓获十分何人不会?就能够那样屁点东西幸好意思秀,切~ 我给您把 格式补全”

于是乘着小明上洗手间的时候,擦掉小明的Code,自身写了大器晚成段高大上的Code:

In [2]:

# 异常捕获全格式
def test(input_str):
    try:
        eval(input_str)
    except ZeroDivisionError as ex:
        print("except:", ex)
    else:
        print("else:没有异常就奖励100块~")
    finally:
        print("finally:小明是傻子~")


def main():
    test("1/0")
    print("-" * 10)
    test("print('小明啊小明你调坑里了~')")


if __name__ == '__main__':
    main()

 

except: division by zero
finally:小明是傻子~
----------
小明啊小明你调坑里了~
else:没有异常就奖励100块~
finally:小明是傻子~

 

那儿小明和教育者共同进去了,学生们隐约间都听到小明的自夸声:“老师,作者可好了,提前预习並且还写了个demo在黑板上呢~”

教员风度翩翩进门望着黑板就笑了,学子们也笑成一片。小明心想,咦~难道本身写错了?定眼后生可畏看黑板,气呼呼的回座位了

else能够不写,可是我们 差十分的少照旧会写的,终究能够清楚是的确未有不当,并非遮挡了不当

1.3 多少个非常管理¶

教师的天赋很欣尉,认为那么些班真风趣,大家学习空前热情,为了料理小明,老师反问道:“有什么人知道 四个要命怎么管理?”

小明快速的举手并把黑板上内容擦完,写下了之类代码:

In [3]:

# 多个异常捕获
def main():
    try:
        print(xiaopan)  # NameError: name 'xiaopan' is not defined
        1 / 0  # ZeroDivisionError: division by zero
    except NameError as ex:
        print(ex)
    except ZeroDivisionError as ex:
        print(ex)

if __name__ == '__main__':
    main()

 

name 'xiaopan' is not defined

 

先生问了小圣元声,有多少个出口?

小明自豪的说道:“多个,小编写了三个要命管理,当然都实施了”

校友们又笑了,小潘作弄的说了句:“风姿罗曼蒂克看就知晓2018年C#没好好学,那不都黄金时代致嘛,相见特别上面代码还实行吗?用心血好好考虑”

当我们以为某个代码大概会出错开上下班时间,就能够用try来运维这段代码,假诺实施出错,则持续代码不会继续推行,而是向来跳转至except语句块,执行完except后,如果有finally语句块,则执行finally语句块

小明又难堪了。。。

1.4 多极其简写¶

老师再一次帮小明圆了个场:“已经十分不轻便了,便是最终小得意的时候口误了,那小明同学你明白Python里面多非常有个方便人民群众写法吗?”

小明赶紧拿起粉笔刷刷刷的写完,然后说道:“of course

In [4]:

# 多个异常捕获的简写(注意哦,是元组哦)
def main():
    try:
        print(xiaopan)  # NameError: name 'xiaopan' is not defined
        1 / 0  # ZeroDivisionError: division by zero
    except (NameError, ZeroDivisionError) as ex:
        print(ex)


if __name__ == '__main__':
    main()

 

name 'xiaopan' is not defined

 

导师赶紧夸了夸小明,心想,哎呦喂终于把那难缠的玩意儿弄回座位了。

小明走前还不要忘记说一句:“简写的时候注意格式哦,是 元组 不是逗号分隔”

教师的天资那堂课超级轻巧,大家都预习了还要内容也比较简单。

随时以咨询的不二法门问道:“小潘同学,你驾驭特别的基类是怎么样吗?假设要捕获全部非常该怎么办呢?”

小潘站起来说道:“是BaseException

教员职员和工人增添道:“全部的荒唐类型都持续自BaseException,所以在应用except时需求注意的是,它不唯有捕获该项目标不当,还把其子类也一路抓获了”

故而平常在破获非凡的时候 把子类至极放在这段日子,父类放在前面

看如下代码:

In [5]:

def main():
    try:
        1 / 0  # ZeroDivisionError: division by zero
    except BaseException as ex:
        print("base:", ex)
    except ZeroDivisionError as ex:
        print(ex)


if __name__ == '__main__':
    main()

 

base: division by zero

 

假若把父类放第三个,那么ZeroDivisionError永世也不会被施行了,其实你只要装了 代码标准提醒插件会提示您的

能够参见小编从前写的 vscode设置python3调节和测量试验遭受的扩大部分

来个通用异常捕获的简写(官方不引进应用简写卡塔尔:

In [6]:

# 直接except就行了
def main():
    try:
        1 / 0
        dnt += 1
    except:
        print("屏蔽错误")


if __name__ == '__main__':
    main()

 

屏蔽错误

 

教育工作者继续讲到,大家来看三个地方,现在无数在线编辑器,你在他们那个编辑框里写下了代码也有充裕抛出的,那是怎么管理的吧?

微软有开源代码编辑器相比受款待(VSCode的意气风发有的卡塔尔国:monaco-editor

唤醒一下,借使确实要做在线编辑器,记得思虑一下fork炸弹,这几个其实也是很老的东西了,程序猿基本上都应该接触过了

1.5 抛出特别¶

大家世袭,像C#是用thorw抛出非常,那Python怎么 捕获异常后再抛出 呢?怎么自定义异常 呢?

三翻五次往下看:

In [7]:

# 捕获异常后再丢出,eg:在线运行的用户Code
def main():
    try:
        1 / 0  # ZeroDivisionError: division by zero
    except ZeroDivisionError as ex:
        print(ex)  # 写个日志,回头出问题可以深究
        raise


if __name__ == '__main__':
    main()

 

division by zero

 

---------------------------------------------------------------------------
ZeroDivisionError                         Traceback (most recent call last)
<ipython-input-7-15f01346e2d8> in <module>()
      9 
     10 if __name__ == '__main__':
---> 11main()

<ipython-input-7-15f01346e2d8> in main()
      2 def main():
      3     try:
----> 41 / 0  # ZeroDivisionError: division by zero
      5     except ZeroDivisionError as ex:
      6         print(ex)  # 写个日志,回头出问题可以深究

ZeroDivisionError: division by zero

In [8]:

# 抛出自定义异常
class DntException(BaseException):
    pass


def get_age(num):
    if num <= 0:
        raise DntException("num must>0")
    else:
        print(num)


def main():
    get_age(-1)
    get_age(22)  # 程序崩了,这句话不会被执行了


if __name__ == '__main__':
    main()

 

---------------------------------------------------------------------------
DntException                              Traceback (most recent call last)
<ipython-input-8-7c9dec6ec225> in <module>()
     17 
     18 if __name__ == '__main__':
---> 19main()

<ipython-input-8-7c9dec6ec225> in main()
     12 
     13 def main():
---> 14get_age(-1)
     15     get_age(22)  # 程序崩了,这句话不会被执行了
     16 

<ipython-input-8-7c9dec6ec225> in get_age(num)
      6 def get_age(num):
      7     if num <= 0:
----> 8raise DntException("num must>0")
      9     else:
     10         print(num)

DntException: num must>0

 

极其这一块大致说完了(logging模块后边会说卡塔 尔(英语:State of Qatar)有哪些补充的能够说的^_^

 

1.6 C#异常¶

小明又张开了C#的代码调换,怎么看都以为照旧C#简短啊,根本毫无说吗,代码大器晚成贴就秒懂了。。。

In [1]:

%%script csharp
try
{
    Convert.ToInt32("mmd");
}
catch (Exception ex)
{
    // Input string was not in a correct format
    Console.WriteLine(ex.Message);
}

 

Input string was not in a correct format.

In [2]:

%%script csharp
//抛出自定义异常
try
{
    throw new Exception("出错了啊");
}
catch (Exception ex)
{
    Console.WriteLine(ex.Message);
}

 

出错了啊

 

你能够自定义极其类,世袭Exception就能够,对了C#里面也会有finally的

try
{
    throw new Exception("出错了啊");
    //Convert.ToInt32("mmd");
}
catch (Exception ex)
{
    // Input string was not in a correct format
    Console.WriteLine(ex.Message);
}
finally
{
    Console.WriteLine("finally");
}

现行反革命有个别亟待finally的地点多数都被using(){}接管了,所以一定情景会接纳

先那样了

本文由澳门在线威尼斯官方发布于电脑操作,转载请注明出处:那么些相关

关键词:

上一篇:没有了

下一篇:VMware Workstation All Key