Ok, so let us be straight forward to compare TCP and UDP; TCP offers a wide variety of services to application. For example, routers discard packets because of a lot of factors like bit errors, congestion and instances wherein no correct routes are known. If I choose whether TCP and UDP, I would choose TCP because it offers error recovery. Error detection is good, it is good to detect the error but it would eventually lead to discard frame that has errors. TCP offers retransmission which means that it helps to avoid congestion whereas UDP does not.
But do not underestimate UDP, UDP still exists because UDP needs fewer bytes to its header compared to TCP. Since the major difference of TCP and UDP is error recovery, there are applications that does not need error recovery and UDP is the top choice for that.VOIP is one of the application that does not need error recovery
Also, UDP software does not slow down data transfer in cases where TCP may purposely slow down. As a summary TCP provides error recovery and UDP provides faster data transfer and needs fewer bytes. TCP is the top choice for those applications that strongly needs error recovery