相关疑难解决方法(0)

Python是否具有Java等效的throw new Exception("text here")

我是一名Java开发人员,他是Python的新手,我将Java类重写为Python类.我试图尽可能地模仿Python类中原始类的流程.Java类有几行,

    if(condition)
       throw new Exception("text here")
Run Code Online (Sandbox Code Playgroud)

我一直在查看Python文档中的异常,并且无法找到与Java语法等效的Python.

我已经raise Exception("text here")通过阅读这个StackOverflow帖子尝试了一些东西(我认为很接近),但似乎这是在try except块中使用并且会导致从try块跳转到except块; 而我正试图避免try except阻塞而只是抛出异常.

我认为可行的解决方案是这样的,

    try:
        if(condition):
           raise Exception("text here")
    except:
        ...
Run Code Online (Sandbox Code Playgroud)

但我想知道是否有一种 Java 方法更密切相关的方法,以便我可以尽可能多地维护流程(让它们看起来相似).

python exception

5
推荐指数
2
解决办法
1297
查看次数

Python 引发 NotADirectoryError

在打开该目录中的文件之前,我试图在目录不存在时引发错误。根据这个回复,我应该为我的问题使用最具体的 Exception 构造函数,我认为是NotADirectoryError. 但是运行下面的代码我得到NameError: global name 'NotADirectoryError' is not defined. 在此先感谢您的帮助!

import os
if not os.path.isdir(baselineDir):
  raise NotADirectoryError("No results directory for baseline.")
Run Code Online (Sandbox Code Playgroud)

如果有更好的方法来做到这一点,请提出建议,谢谢。

python exception os.path

5
推荐指数
1
解决办法
1万
查看次数

Python 通过回溯存储并引发最后一个异常

我的 python 代码中有一个重试机制。如果所有尝试都以某种方式失败,我想提出例外

像这样的东西:

last_exc = None
for i in range(3):
    try:
        raise Exception(i)
    except Exception as e:
        last_exc = e        
else:
    raise last_exc
Run Code Online (Sandbox Code Playgroud)

但问题是我没有在日志中得到确切的回溯。我刚刚收到以下消息:

Traceback (most recent call last):
  File "snippet.py", line 8, in <module>
    raise e
Exception: 2
Run Code Online (Sandbox Code Playgroud)

我期待raise Exception(i)(第 4 行)作为异常中的回溯。该行为仅适用于 python 2.7。

如何设置我正在引发的异常(在上一个异常中引发)的确切回溯?

python exception python-2.7

5
推荐指数
0
解决办法
128
查看次数

停止python脚本而不杀死python进程

我想知道是否有一种方法以编程方式停止python脚本执行而不像我们使用此代码一样杀死进程:

import sys
sys.exit()
Run Code Online (Sandbox Code Playgroud)

这将是相当于Ctrl + c的代码

python python-2.7

3
推荐指数
2
解决办法
1万
查看次数

子类化异常有什么帮助?

我没有直接调用异常,而是看到它被子类化,其中没有任何内容或语句pass。它如何帮助 Python 在内部以这种方式子类化基类?它会改变命名空间或签名吗?如何?

class ACustomException(Exception):
    pass

class BCustomException(Exception):
    pass
Run Code Online (Sandbox Code Playgroud)

python inheritance exception

2
推荐指数
1
解决办法
1091
查看次数

有没有更Pythonic的方法来传递多个可能的异常?

基本上,我想为针对我的 slackbot 的以下任何命令保留打开选项:

@torbot

@torbot [命令]

@torbot [命令] [参数]

下面是我现在一直在用的,但看起来很丑。根据我的经验,通常当某件事看起来很难看时,这意味着可能有一种更直观的方法来完成同样的事情。

class TorbotCommand(object):
def __init__(self, input):
    self.__input = input

    # TODO: There has to be a better way..
    try:
        self.__command_string = self.__input['text'].split(' ', 1)[1].strip().lower()
    except:
        self.__command_string = None
        pass

    try:
        self.__command = self.__command_string.split(' ', 1)[0]
    except:
        self.__command = None
        pass

    try:
        self.__text = self.__command_string.split(' ', 1)[1]
    except: 
        self.__text = None
        pass

def getCommand(self): return self.__command
def getText(self): return self.__text
def getInput(self): return self.__input
Run Code Online (Sandbox Code Playgroud)

python exception python-2.7

1
推荐指数
1
解决办法
436
查看次数

为什么"提高异常"会导致什么结果?

如果我有一个表达式1/0,显然它会出错:

try:
    1/0
except ZeroDivisionError as err:
    print(err)                      # this prints: division by zero
Run Code Online (Sandbox Code Playgroud)

第二次尝试,取而代之的1/0raise ZeroDivisionError......

try:
    raise ZeroDivisionError
except ZeroDivisionError as err:
    print(err)                      # this prints: (nothing)
Run Code Online (Sandbox Code Playgroud)

它什么都不打印.是不是来自异常raise,与一般表达相同?

另外,如何更清楚地理解这种差异?

python exception raise

1
推荐指数
1
解决办法
53
查看次数

程序员说“引发错误”是什么意思(例如,为什么要这样做)?

我正在学习 python 教程,然后来到了一个介绍错误的部分(熟悉错误,不要在出现问题时感到害怕等)。在深入研究了一些错误之后,我看到了“引发错误”和“引发异常”这两个词。

这是特定功能吗?如果是这样,“引发错误”有什么好处?在可视化这一点时,似乎执行代码时产生的错误在运行时被提升到其他代码之上......有人可以帮我把它拼凑起来吗?

提前致谢!

python error-handling

0
推荐指数
1
解决办法
949
查看次数

用于引发值错误的 try 和 except 块

我正在研究扣除金额函数,如果值中 a < b,它应该会引发运行时错误:

这是我的代码

def deduct_amount(a, b):
    try:
        b - a < 0
    except ValueError:
        print(a + ' can not be less than' + b)
    else:
        c = a - b
        return c


deduct_amount(8, 12)


Run Code Online (Sandbox Code Playgroud)

我知道我的 try 语句是错误的。如果 a 小于 b,如何抛出值错误

python try-except

0
推荐指数
1
解决办法
876
查看次数