Discuss / Python / 为什么用try except就不对呢?还是我用错了,求指教。

为什么用try except就不对呢?还是我用错了,求指教。

Topic source

XERIN24040

#1 Created at ... [Delete] [Delete and Lock User]

import unittest

class Student(object):

    def __init__(self, name, score):

        self.name = name

        self.score = score

    def get_grade(self):

        try:

            if 60 <= self.score < 80:

                return 'B'

            if 80 <= self.score <= 100:

                return 'A'

            if 0 <= self.score < 60:

                return 'C'

        except :

            raise ValueError

打卡:

XERIN24040

#2 Created at ... [Delete] [Delete and Lock User]

接上面没法出去的打卡:

import unittest

class Student(object):

    def __init__(self, name, score):

        self.name = name

        self.score = score

    def get_grade(self):

        if 60 <= self.score < 80:

            return 'B'

        if 80 <= self.score <= 100:

            return 'A'

        if 0 <= self.score < 60:

            return 'C'

        else:

            raise ValueError

XERIN24040

#3 Created at ... [Delete] [Delete and Lock User]

可还是不懂为什么不能用try except,有人教教我嘛

因为写成try,try里面不会出错的话就根本不会进except块。

按照第一种写成try的写法,try执行完没有符合条件的,方法就执行完了。

只有写成if-else,才能在前面所有if都不满足的情况下,执行最后一个else。

try是用来捕获错误的,if-else是条件语句,不能等价替换。

因为这样写,-1或101都不出错,而是被定位了C和A

乱码布措

#6 Created at ... [Delete] [Delete and Lock User]

捕获try块中抛出的异常(raise Error),然后在except块处理对应的异常(Error)

heartbeatnice

#7 Created at ... [Delete] [Delete and Lock User]

因为 -1和100进入try 块中只是那几个if条件都不满足,从而没有执行任何语句。这并不会引发异常


  • 1

Reply