2012-07-17 42 views
5

所以这是一个奇怪的问题,但它可能很有趣!我可以在Python中导致异常吗?

我需要以某种方式可靠地导致python异常。我更喜欢它是人为触发的,但我也愿意在我的代码中嵌入一些始终会导致异常的东西。 (我已经建立了一些异常处理,并想测试)

我一直环顾四周,一些想法似乎是除以零或沿着这些线路的东西总是会导致一个例外 - 有没有更好的办法?最理想的做法是模拟程序运行时互联网连接的丢失....任何想法都会很棒!

玩得开心!

+0

你可以放入你的代码:''raise ...'',例如''提高TypeError'' ... – mouad 2012-07-17 16:23:13

回答

5

是的,有:您可以明确提出自己的例外。

raise Exception("A custom message as to why you raised this.") 

您想为网络连接丢失引发适当的异常/错误。

+0

易于使用。它已经帮了我很多!谢谢! – Mizmor 2012-07-17 16:59:13

0

是的,你可以扑通

1/0 

任何地方你的出现运行时错误代码,特别是在这种情况下,ZeroDivisionError: integer division or modulo by zero

这是通过在代码中嵌入内容来获得异常的最简单方法(正如您在文章中提到的那样)。你当然也可以提出自己的例外..取决于你的具体需求。

+2

......那会有什么好处呢?它没有做足够的工作来表达任何想要模拟的错误;它只是一个'ZeroDivisionError'。 – Makoto 2012-07-17 16:27:49

+0

@Makoto引述OP:“我也愿意嵌入在我的代码的东西,总是会导致异常” ..您最好直接在OP您的评论。 – Levon 2012-07-17 16:30:07

3

您可以在Python中定义自己的例外,以便您可以创建自定义错误以满足您的需求。您可以测试存在一定的条件,并使用该测试感实性来决定是否要提高你的光泽,自定义异常:

class MyFancyException(Exception): pass 

def do_something(): 
    if sometestFunction() is True: 
     raise MyFancyException 
    carry_on_theres_nothing_to_see()  

try: 
    do_something() 
except MyFancyException: 
    # This is entirely up to you! 
    # What needs to happen if the exception is caught? 

documentation有一些有用的例子。

+0

这真的很好!当我得到额外的一分钟时,我会创造我自己的。谢谢! – Mizmor 2012-07-17 16:59:33

相关问题