【发布时间】:2015-09-29 13:14:49
【问题描述】:
我必须检查某个变量的内容是否属于某种特定类型(这是我想要实现的健全性检查)。如果其中每一个都不是指定的类型,则程序必须中止。
我在 python 方面没有经验,我浏览了网络上的官方指南,其中声明可以通过类实现定义自己的异常。我不知道这是否会很难,但由于我不必做特别复杂的事情,是否可以以简单的方式做到这一点?
更新
我已经通过以下方式实现了异常 int 异常:
class TypeCheckingException(Exception):
def __init__(self,type_in,type_exp):
self.type_in = type_in
self.type_exp = type_exp
其使用的具体实现行是:
try:
if isinstance(var1,str) == 0:
raise TypeCheckingException(type(var1),str)
if isinstance(var2,str) == 0:
raise TypeCheckingException(type(var2),str)
if isinstance(var3,int) == 0:
raise TypeCheckingException(type(var3),int)
if isinstance(var4,int) == 0:
raise TypeCheckingException(type(var4),int)
if isinstance(var5,str) == 0:
raise TypeCheckingException(type(var5),str)
if isinstance(var6,float) == 0:
raise TypeCheckingException(type(var6),float)
except TypeCheckingException, tce:
print "Type expected input " + str(tce.type_in) + " while type expected is " + str(tce.type_exp) + "."
在这种情况下有效,但错误输出非常冗长......我想让它更短......
有什么线索吗?
【问题讨论】:
-
class MyOwnException(Exception): pass- 这是自定义异常的实现。你现在可以raise那个。这就是你的困惑吗?你到底有什么问题? -
问题是我有一组变量,由内部计算派生(所以我不将它们作为参数传递),因为程序很大,我想在结束时检查它们计算以确保它们是预期的类型。如果此类变量不是预期的类型,则程序必须中止(可能有一个异常指出问题所在)。
-
Sooooo....
if not isinstance(foo, bar): raise MyOwnException()...!?再说一次,你的实际挂断是什么? -
我需要一个明确的例子来说明这种异常的实现。