Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/360.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 从类向Main抛出异常_Python - Fatal编程技术网

Python 从类向Main抛出异常

Python 从类向Main抛出异常,python,Python,我正在尝试编写一个可以导入的独立类。作为这项工作的一部分,我想在我的类中抛出异常,这些异常可以被捕获并在主环境中处理。是否可以向Main抛出特定的异常以供用户/开发人员处理 使用try:and except:在类和Main中抛出它们自己的异常,这是让类将我无法解决的特定异常传递给Main 另外,是否可以了解如何设置Python类,以便它通知用户使用我的特定类必须捕获哪些异常 谢谢。请查看上的python教程部分以及该部分。您可以将自己的异常定义为Exception类的子类,然后在main中捕获它

我正在尝试编写一个可以导入的独立类。作为这项工作的一部分,我想在我的类中抛出异常,这些异常可以被捕获并在主环境中处理。是否可以向Main抛出特定的异常以供用户/开发人员处理

使用try:and except:在类和Main中抛出它们自己的异常,这是让类将我无法解决的特定异常传递给Main

另外,是否可以了解如何设置Python类,以便它通知用户使用我的特定类必须捕获哪些异常


谢谢。

请查看上的python教程部分以及该部分。您可以将自己的异常定义为
Exception
类的子类,然后在main中捕获它们

下面是一个简单的示例,尽管本教程中的示例更好:

class MyModuleException(Exception):
    """An exception raised by my module"""

    def __init__(self, message):
        super(MyModuleException, self).__init__(message)
然后在后面的主要方法中:

try:
    myModule.doSomethingExceptional()
except MyModuleException as e:
    print "Oh no!"
最后,您通常会将文档中可能出现的异常告知模块的客户机。报告说:

函数或方法的docstring应该总结其行为并记录其参数、返回值、副作用、引发的异常


编辑:您还应该查看标准异常类的列表,这些异常类可能适合您进行子类化。

请查看上的python教程部分以及该部分。您可以将自己的异常定义为
Exception
类的子类,然后在main中捕获它们

下面是一个简单的示例,尽管本教程中的示例更好:

class MyModuleException(Exception):
    """An exception raised by my module"""

    def __init__(self, message):
        super(MyModuleException, self).__init__(message)
然后在后面的主要方法中:

try:
    myModule.doSomethingExceptional()
except MyModuleException as e:
    print "Oh no!"
最后,您通常会将文档中可能出现的异常告知模块的客户机。报告说:

函数或方法的docstring应该总结其行为并记录其参数、返回值、副作用、引发的异常

编辑:您还应该查看标准异常类的列表,该列表可能适合您进行子类化

我正在尝试编写一个可以导入的独立类。作为这项工作的一部分,我想在我的类中抛出异常,这些异常可以被捕获并在主环境中处理。是否可以向Main抛出特定的异常以供用户/开发人员处理

对。假设您的类存在于另一个模块中,那么您需要确保main还可以导入将抛出的异常的名称

使用try:and except:在类和Main中抛出它们自己的异常,这是让类将我无法解决的特定异常传递给Main

在类的代码中的某个地方:

raise ClassSpecificError('the thingy majigged')
另外,是否可以了解如何设置Python类,以便它通知用户使用我的特定类必须捕获哪些异常

不,您不能在Python中检查异常

我正在尝试编写一个可以导入的独立类。作为这项工作的一部分,我想在我的类中抛出异常,这些异常可以被捕获并在主环境中处理。是否可以向Main抛出特定的异常以供用户/开发人员处理

对。假设您的类存在于另一个模块中,那么您需要确保main还可以导入将抛出的异常的名称

使用try:and except:在类和Main中抛出它们自己的异常,这是让类将我无法解决的特定异常传递给Main

在类的代码中的某个地方:

raise ClassSpecificError('the thingy majigged')
另外,是否可以了解如何设置Python类,以便它通知用户使用我的特定类必须捕获哪些异常


不,您不能在Python中检查异常。

对于特定的收件人,不会抛出异常。它们只是被抛出(并被调用堆栈上的第一个调用堆栈用合适的
except
子句捕获)。对于特定的接收者,永远不会抛出异常。它们刚刚被抛出(并被调用堆栈上的第一个调用捕获,带有合适的
except
子句)。谢谢Matt。因此,为了确认我的理解,如果我只想使用一个默认的python异常(例如zerodivisionerror)来覆盖一个潜在的divde by zero异常,我只需要在类doco中记录潜在的异常,而不做任何其他事情(不尝试或除外)。除了开发人员将其main作为类调用的一部分外,我还尝试了“@Matt”、“@Matt”和“@mattjoiner”,但似乎没有一个坚持?@user788462:是的。记录可能抛出的异常,或者更好,在类内部处理它们,如果这样做有意义的话。例外情况越少越好。@user788462:是的,他们做了一个蹩脚的改变,所有的评论都会通知你评论的海报。其中一部分是删除海报名称的自动完成。伙计们都疯了,谢谢你,马特。因此,为了确认我的理解,如果我只想使用一个默认的python异常(例如zerodivisionerror)来覆盖一个潜在的divde by zero异常,我只需要在类doco中记录潜在的异常,而不做任何其他事情(不尝试或除外)。除了开发人员将其main作为类调用的一部分外,我还尝试了“@Matt”、“@Matt”和“@mattjoiner”,但似乎没有一个坚持?@user788462:是的。记录可能抛出的异常,或者更好,在类内部处理它们,如果这样做有意义的话。例外情况越少越好。@user788462:是的,他们做了一个蹩脚的改变,所有的评论都会通知你评论的海报。其中一部分是删除海报名称的自动完成。伙计们都快疯了