An exception occurs when an operation is invoked with its pre condition satisfied, yet cannot return with its post-condition satisfied. An invariant is a statement about a class. Always' means whenever the object is available to have an operation invoked upon it. In essence this means that the invariant is added to pre and post conditions of all public operations of the class. The invariant may become false during execution of a method, but should be restored by the time any other object can do anything to the receiver.
Assertions have a particular role in subclassing.
One of the dangers of polymorphism is that you could redefine the subclass's operation in such a way as to be inconsistent with the superclass operation. The assertions stop you from doing this. The invariants and post-conditions of a class must apply to all subclasses. The subclasses can choose to strengthen these assertions but they cannot weaken them. The pre-condition on the other hand cannot be strengthened but may be weakened.