Возбудить исключение - PullRequest
3 голосов
/ 12 мая 2010

Я хотел бы вызвать исключение, поскольку оно сделано в Python или Java - чтобы завершить программу с сообщением об ошибке -.

Сообщение об ошибке может быть возвращено родительской функции:

func readFile(filename string) (content string, err os.Error) {
    content, err := ioutil.ReadFile(filename)
    if err != nil {
        return "", os.ErrorString("read " + filename + ": " + err)
    }
    return string(content), nil
}

но я хочу, чтобы он мог быть завершен, когда обнаружена ошибка. Будет ли правильным следующий?

func readFile(filename string) (content string) {
    content, err := ioutil.ReadFile(filename)

    defer func() {
        if err != nil {
            panic(err)
        }
    }()

    return string(content)
}

1 Ответ

8 голосов
/ 12 мая 2010

По соглашению, Go не делает таких вещей. У него есть panic и recover, которые похожи на исключения, но используются только в действительно исключительных случаях. Не найти файл или что-то подобное - это не исключительное обстоятельство, а очень регулярное. Исключительные обстоятельства - это разыменование указателя nil или деление на ноль.

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