Этот тип ситуации зависит от реализации, и поэтому для ее ловушки потребуется конкретный механизм поставщика. С Microsoft это будет связано с SEH, а * nix будет включать в себя сигнал
. В целом, хотя исключение исключения доступа является очень плохой идеей. Существует почти нет возможности восстановить из AV-исключения, и попытка сделать это просто приведет к сложному обнаружению ошибок в вашей программе.
Вам необходимо развернуть данные. В MySQL это, вероятно, легче всего сделать с помощью union all
:
select tree
from ((select id, 'apple' as tree
from trees
where apple = 1
) union all
(select id, 'banana' as tree
from trees
where banana = 1
) union all
(select id, 'coconut' as tree
from trees
where coconut = 1
) union all
(select id, 'pear' as tree
from trees
where pear = 1
)
) t
where id = 1;