Обработка исключений Python при импорте - PullRequest
0 голосов
/ 25 сентября 2011

Первый файл:

class E1Exception (Exception):

    def __init__(self,x):
        self.x=x


    def raiser (self,x):
        self.x=x
        if x=='So sue me':
            raise E1Exception('New Yorker')
        else:
            try:
                number = (int)(x)
                pass
            except ValueError:
                raise ValueError ()

Второй файл:

import e1a
from e1a import *


def reporter (f,x):

    try:
        print f(x)
        return ('no problem')
    except ValueError:
        return ('Value')
    except E1Exception:
        return ('E1')
    else:
        return ('generic')

Вопрос 1:

Должна ли функция-сборщик быть статической, чтобы ее можно было использовать во втором файле?

Проблема в том, что E1Exception ни разу не пойман, какое-либо решение?

Ответы [ 2 ]

1 голос
/ 25 сентября 2011

Проблема в том, что ошибка никогда не "возникает"

http://docs.python.org/tutorial/errors.html

Вы должны написать raise E1Exception(x) где-нибудь с некоторым значением x.

0 голосов
/ 25 сентября 2011

Должна ли функция-сборщик быть статической, чтобы ее можно было использовать в второй файл?

Python не имеет понятия "статический". Что вы подразумеваете под "статичным"?

Кроме того, я не думаю, что вы понимаете, что делает (int)(x). Мне кажется, что вы пытаетесь разыграть x как int. И хотя это работает, это только по стечению обстоятельств. Что вы действительно делаете, так это вызываете функцию int на x. Так что это эквивалентно

number = int(x)

Это не относится к вашим вопросам, но я подумал, что должен указать это на случай, если кто-то запутается.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...