2016-08-11 6 views
-1

Я очень новичок в Python. Я пытаюсь обработать исключение в API загрузки файлов. Но я не могу поймать. Если идет успех, он показывает загруженный файл.Ошибка обработки исключений в Python

app.py:

from flask import Flask 
from flask_cors import CORS, cross_origin 
from flask import request,jsonify 

import smtplib, os, cgi 
from email.mime.application import MIMEApplication 
from email.mime.multipart import MIMEMultipart 
from email.mime.base import MIMEBase 
from email.mime.text import MIMEText 
from email import encoders 
from werkzeug.utils import secure_filename 

app = Flask(__name__) 
CORS(app) 
app.config['UPLOAD_FOLDER'] = 'upload/' 
# These are the extension that we are accepting to be uploaded 
app.config['ALLOWED_EXTENSIONS'] = set(['txt', 'pdf','docx','ods','xls']) 

# For a given file, return whether it's an allowed type or not 
def allowed_file(filename): 
    return '.' in filename and \ 
      filename.rsplit('.', 1)[1] in app.config['ALLOWED_EXTENSIONS'] 

@app.route('/upload', methods=['POST']) 
def upload(): 
    file = request.files['file'] 
    try: 
     if file and allowed_file(file.filename): 
      filename = secure_filename(file.filename) 
      file.save(os.path.join(app.config['UPLOAD_FOLDER'], filename)) 
     return('file uploaded successfully') 
    except IOError: 
     return("fail file upload") 

if __name__=="__main__": 
    app.run(debug=True) 
+0

Вы пытались поймать все Исключения для проверки? –

+1

'IOError' не должен быть правильным типом исключения. Сначала замените «Исключение», распечатайте и уточните позже. ИЛИ: пусть он запускается без try/except и уточняет. –

ответ

2

Попробуйте поймать все исключения:

try: 
    raise ValueError('stuff') 
except BaseException as e: 
    print 'Statement:', e.args 
    print 'Type:', type(e) 

Выходы:

Заявление: ('материал',)

Тип : (класс 'ValueError')

Это позволит вам увидеть, что происходит. Используя BaseException, вы получите ВСЕ типы исключений, затем вы можете запросить e, чтобы узнать, что это такое. Очевидно, что вы должны тщательно отслеживать все исключения, и это обычно не считается очень хорошей практикой, но может быть полезно для отладки, по крайней мере. Когда вы видите, что такое тип, вы можете вернуться назад и сузить его.

Смежные вопросы