12

引发异常时是否可以创建自定义条件?考虑以下示例:

BEGIN       
    y := x / 0;
EXCEPTION
    WHEN division_by_zero THEN
        RAISE NOTICE 'caught division_by_zero';
        RETURN x;
END;

在这里,我使用 'division_by_zero' 条件来捕获异常。我想做的是这样的:

BEGIN       
    [...]
    RAISE custom_condition;
EXCEPTION
    WHEN custom_condition THEN
       [...]
END;

这样我就不会干扰可能的标准异常。我可以做 y:= 1 / 0; 并抓住除法零,但它看起来不正确。

4

1 回答 1

27
begin
    if $1='bar' then
        raise exception using
            errcode='NOBAR',
            message='Bar is prohibited',
            hint='We do not talk to this guy';
    end if;
exception
    when sqlstate 'NOBAR' then
        update nobar_raised set count=count+1;
end;

更多信息:

于 2011-10-14T13:50:33.883 回答