'Return the next jump that was generated by an except SomeException:
construct in a try...except...else clause or None if not found.'

def next_except_jump(self, start):

    if (self.code[start] == DUP_TOP):
        except_match = self.first_instr(start, len(self.code), POP_JUMP_IF_FALSE)
        if except_match:
            jmp = self.prev[self.get_target(except_match)]
            self.ignore_if.add(except_match)
            self.not_continue.add(jmp)
            return jmp
    count_END_FINALLY = 0
    count_SETUP_ = 0
    for i in self.op_range(start, len(self.code)):
        op = self.code[i]
        if (op == END_FINALLY):
            if (count_END_FINALLY == count_SETUP_):
                assert (self.code[self.prev[i]] in (JA, JF, RETURN_VALUE))
                self.not_continue.add(self.prev[i])
                return self.prev[i]
            count_END_FINALLY += 1
        elif (op in (SETUP_EXCEPT, SETUP_WITH, SETUP_FINALLY)):
            count_SETUP_ += 1
