Python 创建自定义异常?

Python 创建自定义异常?,python,python-3.x,Python,Python 3.x,有没有办法缩短以下场景,这样我就不必使用难看的嵌套try-except语句 class Error(Exception): def __init__(self): print("That did not work") try: try: gblgbl except: raise Error except Error: pass 我想要的可以描述为以下伪代码: Try something: something

有没有办法缩短以下场景,这样我就不必使用难看的嵌套try-except语句

class Error(Exception):
    def __init__(self):
        print("That did not work")
try:
    try:
        gblgbl
    except:
        raise Error
except Error:
    pass
我想要的可以描述为以下伪代码:

Try something:
    something
if something went wrong:
    raise Error
catch Error:
    what to do if error occours
如果try语句成功,我不想引发错误,但是如果我在exception语句中引发异常,如下所示:

try:
    gblgbl
except:
    raise Error
except Error:
    pass
不能用other-except捕获它,因为已经有一个except捕获python异常,并且解释器抛出一个SyntaxError

我错过了什么明显的东西吗


我知道你可能永远不会在实际的程序中使用它,但我对这个理论很好奇。

这里没有理由使用异常。下面的(伪)代码实现了相同的功能

try:
    gblgbl
except:
    pass

但是请注意,捕获所有异常通常不是一个好主意,因为例如,
键盘中断
异常也会被捕获,因此不能使用
Ctrl-c
中断程序。这里没有理由使用异常。下面的(伪)代码实现了相同的功能

try:
    gblgbl
except:
    pass
但是请注意,捕获所有异常通常不是一个好主意,因为例如,
KeyboardInterrupt
异常也会被捕获,因此不能使用
Ctrl-c
中断程序

创建自定义异常

这本书有一节是关于

创建自定义异常


除了@jefcabatingan提到的问题之外,我认为这已经有了一个关于

的部分。你所要做的就是将任何异常(除了
gblgbl
执行时)转换为
错误
异常,然后立即处理它。你真的不需要内部异常子句来做这件事。除了@jefcabatingan提到的问题之外,我认为这已经有了答案。你所要做的就是将任何异常(除了
gblgbl
执行时)转换为
错误
异常,然后立即处理它。您不需要使用内部异常子句来执行此操作。当然,但我可以计算错误类的类变量中发生此异常的次数。但这仍然忽略了异常的意义,即向调用方发出错误信号。您的示例也可以使用任何其他计数器来实现,并且不需要单独的
try
-
,除了
。当然可以,但我可以计算错误类的类变量中发生此异常的次数。但这仍然忽略了异常的要点,即向调用方发出错误信号。您的示例也可以使用任何其他计数器来实现,并且不需要单独的
try
-
,除了