繁体   English   中英

未引发异常-Python

[英]Exception not raised - Python

class client():
    def __init__(self,identitate,nume,cnp,filme_inchiriate,inchirieri):
        self.__identitate=identitate
        self.__nume=nume
        self.__cnp=cnp
        self.__filme_inchiriate=filme_inchiriate
        self.__inchirieri=inchirieri  

    def get_identitate(self):
        return self.__identitate


    def get_nume(self):
        return self.__nume


    def get_cnp(self):
        return self.__cnp

    def get_filme_inchiriate(self):
        return self.__filme_inchiriate


    def get_inchirieri(self):
        return self.__inchirieri


    def set_identitate(self, value):
        self.__identitate = value


    def set_nume(self, value):
        self.__nume = value


    def set_cnp(self, value):
        self.__cnp = value


    def set_filme_inchiriate(self, value):
        self.__filme_inchiriate = value


    def set_inchirieri(self, value):
        self.__inchirieri = value


    def del_identitate(self):
        del self.__identitate


    def del_nume(self):
        del self.__nume


    def del_cnp(self):
        del self.__cnp


    def del_filme_inchiriate(self):
        del self.__filme_inchiriate


    def del_inchirieri(self):
        del self.__inchirieri

    identitate = property(get_identitate, set_identitate, del_identitate, "identitate's docstring")
    nume = property(get_nume, set_nume, del_nume, "nume's docstring")
    cnp = property(get_cnp, set_cnp, del_cnp, "cnp's docstring")
    filme_inchiriate = property(get_filme_inchiriate, set_filme_inchiriate, del_filme_inchiriate, "filme_inchiriate's docstring")
    inchirieri = property(get_inchirieri, set_inchirieri, del_inchirieri, "inchirieri's docstring")
    def __str__(self):
        return "ID: " + str(self.get_identitate()) + " Nume: " + str(self.get_nume()) + " CNP: "+ str(self.get_cnp())


from entities import *

class validator_client():

     def validate_client(self,client):
         erori=[]
         if client.get_identitate=="":
             erori.append("Nu ati introdus ID!")
         if client.get_nume=="":
             erori.append("Nu ati indorus nume!")
         if len(erori)>0:
             raise ValidatorException(erori)

     def haha(self,client):
         if client.get_identitate()=="1":
             print "hahahah" 

class ValidatorException(Exception):
     def __init__(self,erori):
         self.__erori=erori
     def get_erori(self):
         return self.__erori
     def __str__(self):
         return self.erori
     erori = property(get_erori, None, None, None)


client1=client("",2,3,4,5)
validare=validator_client()
try:
     validare.validate_client(client1)
except:
     ValidatorException
     print (ValidatorException)

client()是一个具有5个属性的类,其中第一个属性是id,它具有一个getter和setter,所以该类没有问题,但是为什么在我运行此命令时不打印任何错误?

几件事:您不是在调用该getter,而是在获取该方法(除非它是一个属性,在这种情况下,为什么将其称为get)。 另外,正如@Martijn Pieters在评论中所说,您的except子句将捕获所有异常,然后打印ValidatorException类的字符串表示形式,而不是异常实例。

至于except子句,我想您可能正在寻找的是:

except ValidatorException as ve:
    print(ve)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM