Error Injection

As a regular practice i used to have two approach to inject error.
1)In seq_item,i will take a variable and set whenever i want to inject error.(Here Driver will inject error)
2)I read but never used (and i think not useful as and when project demand to many error scenario with cross combination with others valid values) extend your seq_item and write constrain over there.

As when as project demand so many error scenario point #1 will work,but need to very care full when coding driver part.
So is there any mechanism in UVM ?