我有兩個可能的錯誤,我可以在我的用例中得到:'RSA key format is not supported'
不正確的密碼和'PEM encryption format not supported.'
所需的密碼但沒有給出。這些都是ValueError類型。捕捉異常和處理除:if語句
我試圖做到這一點的嘗試 - 除了
from flask import Flask, url_for, request, json, jsonify
from Crypto.PublicKey import RSA
app = Flask(__name__)
@app.route('/key2pub', methods = ['POST'])
def api_keypub():
if request.headers['Content-Type'] == 'application/json':
resp = None
try:
pubkey = RSA.importKey(request.json['key'], request.json['passphrase'])
except ValueError as e:
if e == 'RSA key format is not supported':
global resp
resp = jsonify({"error": "Incorrect passphrase", "raw": e})
elif e == 'PEM encryption format not supported.':
global resp
resp = jsonify({"error": "Passphrase missing", "raw": e})
return resp
if __name__ == '__main__':
app.run(debug=True);
,我發現了錯誤:
...
ValueError: View function did not return a response
如此看來,resp
是沒有得到的設置,除非聲明。
我懷疑我正在使用try-except以錯誤的方式,有人可以告訴我正確的方法來做到這一點嗎?
您的if語句不在您的except語句中。如果這是一個錯字,然後打印'e'並確保它返回正確的字符串 – SirParselot
是的,這是SO上的拼寫錯誤,它在我的代碼中正確縮進。 – Dru
如果內容類型不是「application/json」,會返回什麼內容? –