We know about the halting problem that states that there is in general no way to determine if a program will halt. However, for certain programs we can certainly say that they will halt. For example a simple for loop.
So my question is, is there a general classification/taxonomy of problems for which we can determine if they halt or not?