Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/334.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.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中为单个语句引发多个可能的异常_Python_Oracle - Fatal编程技术网

如何在python中为单个语句引发多个可能的异常

如何在python中为单个语句引发多个可能的异常,python,oracle,Python,Oracle,我有以下声明: try: cx_oracle..connect(username/password@hostname:port/service) except cx_Oracle.DatabaseError: #do_stuff 假设我提供了有效的用户名、空的密码、无效的主机名和无效的服务名称;我在块中写入条件,除了块,以便根据Oracle错误代码执行某些操作 如何列出所有可能的数据库错误,而不更正发生的第一个错误 Actual o/p: TNS: listener does no

我有以下声明:

try:
   cx_oracle..connect(username/password@hostname:port/service)
except cx_Oracle.DatabaseError:
   #do_stuff
假设我提供了有效的
用户名
、空的
密码
、无效的
主机名
和无效的
服务
名称;我在
块中写入条件,除了
块,以便根据Oracle错误代码执行某些操作

如何列出所有可能的数据库错误,而不更正发生的第一个错误

Actual o/p: TNS: listener does not currently know of service requested 
Required o/p:  TNS: listener does not currently know of service requested
               empty password
               Invalid host

可以在元组中放置多个错误。然后您可以使用e访问任何错误

try:
    cx_oracle..connect(username/password@hostname:port/service)
except (cx_Oracle.DatabaseError, Error1, Error2) as e:
    # do stuff
您还可以有多个例外

try:
    cx_oracle..connect(username/password@hostname:port/service)
except cx_Oracle.DatabaseError:
    # do stuff
except Error1:
    # do stuff

不久前,我遇到了一个类似的问题,在stackoverflow上的某个地方发现了这个问题,它捕获了多个错误:

    try:
        cur.execute("insert into project_source_code(project, path) values(:project_id,:prj_path)",(project_id, prj_path))

    except cx_Oracle.DatabaseError as e:
        error, = e.args
        print(error.code)
        print(error.message)
        print(error.context)

我有一个以上的数据库错误的可能性,代码只显示第一个发生的错误我不知道你的错误的名称,但基本上你可以取代“Error1”和“Error2”与任何你想要捕捉的错误,包括不同的数据库错误